"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.typeByName = exports.TYPES = exports.TYPE = void 0; var _null = _interopRequireDefault(require("./data-types/null")); var _tinyint = _interopRequireDefault(require("./data-types/tinyint")); var _bit = _interopRequireDefault(require("./data-types/bit")); var _smallint = _interopRequireDefault(require("./data-types/smallint")); var _int = _interopRequireDefault(require("./data-types/int")); var _smalldatetime = _interopRequireDefault(require("./data-types/smalldatetime")); var _real = _interopRequireDefault(require("./data-types/real")); var _money = _interopRequireDefault(require("./data-types/money")); var _datetime = _interopRequireDefault(require("./data-types/datetime")); var _float = _interopRequireDefault(require("./data-types/float")); var _decimal = _interopRequireDefault(require("./data-types/decimal")); var _numeric = _interopRequireDefault(require("./data-types/numeric")); var _smallmoney = _interopRequireDefault(require("./data-types/smallmoney")); var _bigint = _interopRequireDefault(require("./data-types/bigint")); var _image = _interopRequireDefault(require("./data-types/image")); var _text = _interopRequireDefault(require("./data-types/text")); var _uniqueidentifier = _interopRequireDefault(require("./data-types/uniqueidentifier")); var _intn = _interopRequireDefault(require("./data-types/intn")); var _ntext = _interopRequireDefault(require("./data-types/ntext")); var _bitn = _interopRequireDefault(require("./data-types/bitn")); var _decimaln = _interopRequireDefault(require("./data-types/decimaln")); var _numericn = _interopRequireDefault(require("./data-types/numericn")); var _floatn = _interopRequireDefault(require("./data-types/floatn")); var _moneyn = _interopRequireDefault(require("./data-types/moneyn")); var _datetimen = _interopRequireDefault(require("./data-types/datetimen")); var _varbinary = _interopRequireDefault(require("./data-types/varbinary")); var _varchar = _interopRequireDefault(require("./data-types/varchar")); var _binary = _interopRequireDefault(require("./data-types/binary")); var _char = _interopRequireDefault(require("./data-types/char")); var _nvarchar = _interopRequireDefault(require("./data-types/nvarchar")); var _nchar = _interopRequireDefault(require("./data-types/nchar")); var _xml = _interopRequireDefault(require("./data-types/xml")); var _time = _interopRequireDefault(require("./data-types/time")); var _date = _interopRequireDefault(require("./data-types/date")); var _datetime2 = _interopRequireDefault(require("./data-types/datetime2")); var _datetimeoffset = _interopRequireDefault(require("./data-types/datetimeoffset")); var _udt = _interopRequireDefault(require("./data-types/udt")); var _tvp = _interopRequireDefault(require("./data-types/tvp")); var _sqlVariant = _interopRequireDefault(require("./data-types/sql-variant")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const TYPE = exports.TYPE = { [_null.default.id]: _null.default, [_tinyint.default.id]: _tinyint.default, [_bit.default.id]: _bit.default, [_smallint.default.id]: _smallint.default, [_int.default.id]: _int.default, [_smalldatetime.default.id]: _smalldatetime.default, [_real.default.id]: _real.default, [_money.default.id]: _money.default, [_datetime.default.id]: _datetime.default, [_float.default.id]: _float.default, [_decimal.default.id]: _decimal.default, [_numeric.default.id]: _numeric.default, [_smallmoney.default.id]: _smallmoney.default, [_bigint.default.id]: _bigint.default, [_image.default.id]: _image.default, [_text.default.id]: _text.default, [_uniqueidentifier.default.id]: _uniqueidentifier.default, [_intn.default.id]: _intn.default, [_ntext.default.id]: _ntext.default, [_bitn.default.id]: _bitn.default, [_decimaln.default.id]: _decimaln.default, [_numericn.default.id]: _numericn.default, [_floatn.default.id]: _floatn.default, [_moneyn.default.id]: _moneyn.default, [_datetimen.default.id]: _datetimen.default, [_varbinary.default.id]: _varbinary.default, [_varchar.default.id]: _varchar.default, [_binary.default.id]: _binary.default, [_char.default.id]: _char.default, [_nvarchar.default.id]: _nvarchar.default, [_nchar.default.id]: _nchar.default, [_xml.default.id]: _xml.default, [_time.default.id]: _time.default, [_date.default.id]: _date.default, [_datetime2.default.id]: _datetime2.default, [_datetimeoffset.default.id]: _datetimeoffset.default, [_udt.default.id]: _udt.default, [_tvp.default.id]: _tvp.default, [_sqlVariant.default.id]: _sqlVariant.default }; /** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
TypeConstantJavaScriptResult setParameter
Exact numerics
bit[[TYPES.Bit]]boolean✓✓
tinyint[[TYPES.TinyInt]]number✓✓
smallint[[TYPES.SmallInt]]number✓✓
int[[TYPES.Int]]number✓✓
bigint1[[TYPES.BigInt]]string✓✓
numeric2[[TYPES.Numeric]]number✓✓
decimal2[[TYPES.Decimal]]number✓✓
smallmoney[[TYPES.SmallMoney]]number✓✓
money[[TYPES.Money]]number✓✓
Approximate numerics
float[[TYPES.Float]]number✓✓
real[[TYPES.Real]]number✓✓
Date and Time
smalldatetime[[TYPES.SmallDateTime]]Date✓✓
datetime[[TYPES.DateTime]]Date✓✓
datetime2[[TYPES.DateTime2]]Date✓✓
datetimeoffset[[TYPES.DateTimeOffset]]Date✓✓
time[[TYPES.Time]]Date✓✓
date[[TYPES.Date]]Date✓✓
Character Strings
char[[TYPES.Char]]string✓✓
varchar3[[TYPES.VarChar]]string✓✓
text[[TYPES.Text]]string✓✓
Unicode Strings
nchar[[TYPES.NChar]]string✓✓
nvarchar3[[TYPES.NVarChar]]string✓✓
ntext[[TYPES.NText]]string✓-
Binary Strings4
binary[[TYPES.Binary]]Buffer✓✓
varbinary[[TYPES.VarBinary]]Buffer✓✓
image[[TYPES.Image]]Buffer✓✓
Other Data Types
TVP[[TYPES.TVP]]Object-✓
UDT[[TYPES.UDT]]Buffer✓-
uniqueidentifier4[[TYPES.UniqueIdentifier]]string✓✓
variant[[TYPES.Variant]]any✓-
xml[[TYPES.Xml]]string✓-
* *
    *
  1. *

    BigInt

    *

    * Values are returned as a string. This is because values can exceed 53 bits of significant data, which is greater than a * Javascript number type can represent as an integer. *

    *
  2. *
  3. *

    Numerical, Decimal

    *

    * For input parameters, default precision is 18 and default scale is 0. Maximum supported precision is 19. *

    *
  4. *
  5. *

    VarChar, NVarChar

    *

    * varchar(max) and nvarchar(max) are also supported. *

    *
  6. *
  7. *

    UniqueIdentifier

    *

    * Values are returned as a 16 byte hexadecimal string. *

    *

    * Note that the order of bytes is not the same as the character representation. See * Using uniqueidentifier Data * for an example of the different ordering of bytes. *

    *
  8. *
*/ const TYPES = exports.TYPES = { TinyInt: _tinyint.default, Bit: _bit.default, SmallInt: _smallint.default, Int: _int.default, SmallDateTime: _smalldatetime.default, Real: _real.default, Money: _money.default, DateTime: _datetime.default, Float: _float.default, Decimal: _decimal.default, Numeric: _numeric.default, SmallMoney: _smallmoney.default, BigInt: _bigint.default, Image: _image.default, Text: _text.default, UniqueIdentifier: _uniqueidentifier.default, NText: _ntext.default, VarBinary: _varbinary.default, VarChar: _varchar.default, Binary: _binary.default, Char: _char.default, NVarChar: _nvarchar.default, NChar: _nchar.default, Xml: _xml.default, Time: _time.default, Date: _date.default, DateTime2: _datetime2.default, DateTimeOffset: _datetimeoffset.default, UDT: _udt.default, TVP: _tvp.default, Variant: _sqlVariant.default }; const typeByName = exports.typeByName = TYPES; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbnVsbCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3RpbnlpbnQiLCJfYml0IiwiX3NtYWxsaW50IiwiX2ludCIsIl9zbWFsbGRhdGV0aW1lIiwiX3JlYWwiLCJfbW9uZXkiLCJfZGF0ZXRpbWUiLCJfZmxvYXQiLCJfZGVjaW1hbCIsIl9udW1lcmljIiwiX3NtYWxsbW9uZXkiLCJfYmlnaW50IiwiX2ltYWdlIiwiX3RleHQiLCJfdW5pcXVlaWRlbnRpZmllciIsIl9pbnRuIiwiX250ZXh0IiwiX2JpdG4iLCJfZGVjaW1hbG4iLCJfbnVtZXJpY24iLCJfZmxvYXRuIiwiX21vbmV5biIsIl9kYXRldGltZW4iLCJfdmFyYmluYXJ5IiwiX3ZhcmNoYXIiLCJfYmluYXJ5IiwiX2NoYXIiLCJfbnZhcmNoYXIiLCJfbmNoYXIiLCJfeG1sIiwiX3RpbWUiLCJfZGF0ZSIsIl9kYXRldGltZTIiLCJfZGF0ZXRpbWVvZmZzZXQiLCJfdWR0IiwiX3R2cCIsIl9zcWxWYXJpYW50IiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiVFlQRSIsImV4cG9ydHMiLCJOdWxsIiwiaWQiLCJUaW55SW50IiwiQml0IiwiU21hbGxJbnQiLCJJbnQiLCJTbWFsbERhdGVUaW1lIiwiUmVhbCIsIk1vbmV5IiwiRGF0ZVRpbWUiLCJGbG9hdCIsIkRlY2ltYWwiLCJOdW1lcmljIiwiU21hbGxNb25leSIsIkJpZ0ludCIsIkltYWdlIiwiVGV4dCIsIlVuaXF1ZUlkZW50aWZpZXIiLCJJbnROIiwiTlRleHQiLCJCaXROIiwiRGVjaW1hbE4iLCJOdW1lcmljTiIsIkZsb2F0TiIsIk1vbmV5TiIsIkRhdGVUaW1lTiIsIlZhckJpbmFyeSIsIlZhckNoYXIiLCJCaW5hcnkiLCJDaGFyIiwiTlZhckNoYXIiLCJOQ2hhciIsIlhtbCIsIlRpbWUiLCJEYXRlIiwiRGF0ZVRpbWUyIiwiRGF0ZVRpbWVPZmZzZXQiLCJVRFQiLCJUVlAiLCJWYXJpYW50IiwiVFlQRVMiLCJ0eXBlQnlOYW1lIl0sInNvdXJjZXMiOlsiLi4vc3JjL2RhdGEtdHlwZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTnVsbCBmcm9tICcuL2RhdGEtdHlwZXMvbnVsbCc7XG5pbXBvcnQgVGlueUludCBmcm9tICcuL2RhdGEtdHlwZXMvdGlueWludCc7XG5pbXBvcnQgQml0IGZyb20gJy4vZGF0YS10eXBlcy9iaXQnO1xuaW1wb3J0IFNtYWxsSW50IGZyb20gJy4vZGF0YS10eXBlcy9zbWFsbGludCc7XG5pbXBvcnQgSW50IGZyb20gJy4vZGF0YS10eXBlcy9pbnQnO1xuaW1wb3J0IFNtYWxsRGF0ZVRpbWUgZnJvbSAnLi9kYXRhLXR5cGVzL3NtYWxsZGF0ZXRpbWUnO1xuaW1wb3J0IFJlYWwgZnJvbSAnLi9kYXRhLXR5cGVzL3JlYWwnO1xuaW1wb3J0IE1vbmV5IGZyb20gJy4vZGF0YS10eXBlcy9tb25leSc7XG5pbXBvcnQgRGF0ZVRpbWUgZnJvbSAnLi9kYXRhLXR5cGVzL2RhdGV0aW1lJztcbmltcG9ydCBGbG9hdCBmcm9tICcuL2RhdGEtdHlwZXMvZmxvYXQnO1xuaW1wb3J0IERlY2ltYWwgZnJvbSAnLi9kYXRhLXR5cGVzL2RlY2ltYWwnO1xuaW1wb3J0IE51bWVyaWMgZnJvbSAnLi9kYXRhLXR5cGVzL251bWVyaWMnO1xuaW1wb3J0IFNtYWxsTW9uZXkgZnJvbSAnLi9kYXRhLXR5cGVzL3NtYWxsbW9uZXknO1xuaW1wb3J0IEJpZ0ludCBmcm9tICcuL2RhdGEtdHlwZXMvYmlnaW50JztcbmltcG9ydCBJbWFnZSBmcm9tICcuL2RhdGEtdHlwZXMvaW1hZ2UnO1xuaW1wb3J0IFRleHQgZnJvbSAnLi9kYXRhLXR5cGVzL3RleHQnO1xuaW1wb3J0IFVuaXF1ZUlkZW50aWZpZXIgZnJvbSAnLi9kYXRhLXR5cGVzL3VuaXF1ZWlkZW50aWZpZXInO1xuaW1wb3J0IEludE4gZnJvbSAnLi9kYXRhLXR5cGVzL2ludG4nO1xuaW1wb3J0IE5UZXh0IGZyb20gJy4vZGF0YS10eXBlcy9udGV4dCc7XG5pbXBvcnQgQml0TiBmcm9tICcuL2RhdGEtdHlwZXMvYml0bic7XG5pbXBvcnQgRGVjaW1hbE4gZnJvbSAnLi9kYXRhLXR5cGVzL2RlY2ltYWxuJztcbmltcG9ydCBOdW1lcmljTiBmcm9tICcuL2RhdGEtdHlwZXMvbnVtZXJpY24nO1xuaW1wb3J0IEZsb2F0TiBmcm9tICcuL2RhdGEtdHlwZXMvZmxvYXRuJztcbmltcG9ydCBNb25leU4gZnJvbSAnLi9kYXRhLXR5cGVzL21vbmV5bic7XG5pbXBvcnQgRGF0ZVRpbWVOIGZyb20gJy4vZGF0YS10eXBlcy9kYXRldGltZW4nO1xuaW1wb3J0IFZhckJpbmFyeSBmcm9tICcuL2RhdGEtdHlwZXMvdmFyYmluYXJ5JztcbmltcG9ydCBWYXJDaGFyIGZyb20gJy4vZGF0YS10eXBlcy92YXJjaGFyJztcbmltcG9ydCBCaW5hcnkgZnJvbSAnLi9kYXRhLXR5cGVzL2JpbmFyeSc7XG5pbXBvcnQgQ2hhciBmcm9tICcuL2RhdGEtdHlwZXMvY2hhcic7XG5pbXBvcnQgTlZhckNoYXIgZnJvbSAnLi9kYXRhLXR5cGVzL252YXJjaGFyJztcbmltcG9ydCBOQ2hhciBmcm9tICcuL2RhdGEtdHlwZXMvbmNoYXInO1xuaW1wb3J0IFhtbCBmcm9tICcuL2RhdGEtdHlwZXMveG1sJztcbmltcG9ydCBUaW1lIGZyb20gJy4vZGF0YS10eXBlcy90aW1lJztcbmltcG9ydCBEYXRlIGZyb20gJy4vZGF0YS10eXBlcy9kYXRlJztcbmltcG9ydCBEYXRlVGltZTIgZnJvbSAnLi9kYXRhLXR5cGVzL2RhdGV0aW1lMic7XG5pbXBvcnQgRGF0ZVRpbWVPZmZzZXQgZnJvbSAnLi9kYXRhLXR5cGVzL2RhdGV0aW1lb2Zmc2V0JztcbmltcG9ydCBVRFQgZnJvbSAnLi9kYXRhLXR5cGVzL3VkdCc7XG5pbXBvcnQgVFZQIGZyb20gJy4vZGF0YS10eXBlcy90dnAnO1xuaW1wb3J0IFZhcmlhbnQgZnJvbSAnLi9kYXRhLXR5cGVzL3NxbC12YXJpYW50JztcbmltcG9ydCB7IHR5cGUgQ3J5cHRvTWV0YWRhdGEgfSBmcm9tICcuL2Fsd2F5cy1lbmNyeXB0ZWQvdHlwZXMnO1xuXG5pbXBvcnQgeyB0eXBlIEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMgfSBmcm9tICcuL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlciB7XG4gIHR5cGU6IERhdGFUeXBlO1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgdmFsdWU6IHVua25vd247XG5cbiAgb3V0cHV0OiBib29sZWFuO1xuICBsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHByZWNpc2lvbj86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgc2NhbGU/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgbnVsbGFibGU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIGZvcmNlRW5jcnlwdD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGNyeXB0b01ldGFkYXRhPzogQ3J5cHRvTWV0YWRhdGEgfCB1bmRlZmluZWQ7XG4gIGVuY3J5cHRlZFZhbD86IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlckRhdGE8VCA9IGFueT4ge1xuICBsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHNjYWxlPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBwcmVjaXNpb24/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgY29sbGF0aW9uPzogQ29sbGF0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIHZhbHVlOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFUeXBlIHtcbiAgaWQ6IG51bWJlcjtcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgZGVjbGFyYXRpb24ocGFyYW1ldGVyOiBQYXJhbWV0ZXIpOiBzdHJpbmc7XG4gIGdlbmVyYXRlVHlwZUluZm8ocGFyYW1ldGVyOiBQYXJhbWV0ZXJEYXRhLCBvcHRpb25zOiBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zKTogQnVmZmVyO1xuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXI6IFBhcmFtZXRlckRhdGEsIG9wdGlvbnM6IEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMpOiBCdWZmZXI7XG4gIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXI6IFBhcmFtZXRlckRhdGEsIG9wdGlvbnM6IEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMpOiBHZW5lcmF0b3I8QnVmZmVyLCB2b2lkPjtcbiAgdmFsaWRhdGUodmFsdWU6IGFueSwgY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQsIG9wdGlvbnM/OiBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zKTogYW55OyAvLyBUT0RPOiBSZWZhY3RvciAnYW55JyBhbmQgcmVwbGFjZSB3aXRoIG1vcmUgc3BlY2lmaWMgdHlwZS5cblxuICBoYXNUYWJsZU5hbWU/OiBib29sZWFuO1xuXG4gIHJlc29sdmVMZW5ndGg/OiAocGFyYW1ldGVyOiBQYXJhbWV0ZXIpID0+IG51bWJlcjtcbiAgcmVzb2x2ZVByZWNpc2lvbj86IChwYXJhbWV0ZXI6IFBhcmFtZXRlcikgPT4gbnVtYmVyO1xuICByZXNvbHZlU2NhbGU/OiAocGFyYW1ldGVyOiBQYXJhbWV0ZXIpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFRZUEUgPSB7XG4gIFtOdWxsLmlkXTogTnVsbCxcbiAgW1RpbnlJbnQuaWRdOiBUaW55SW50LFxuICBbQml0LmlkXTogQml0LFxuICBbU21hbGxJbnQuaWRdOiBTbWFsbEludCxcbiAgW0ludC5pZF06IEludCxcbiAgW1NtYWxsRGF0ZVRpbWUuaWRdOiBTbWFsbERhdGVUaW1lLFxuICBbUmVhbC5pZF06IFJlYWwsXG4gIFtNb25leS5pZF06IE1vbmV5LFxuICBbRGF0ZVRpbWUuaWRdOiBEYXRlVGltZSxcbiAgW0Zsb2F0LmlkXTogRmxvYXQsXG4gIFtEZWNpbWFsLmlkXTogRGVjaW1hbCxcbiAgW051bWVyaWMuaWRdOiBOdW1lcmljLFxuICBbU21hbGxNb25leS5pZF06IFNtYWxsTW9uZXksXG4gIFtCaWdJbnQuaWRdOiBCaWdJbnQsXG4gIFtJbWFnZS5pZF06IEltYWdlLFxuICBbVGV4dC5pZF06IFRleHQsXG4gIFtVbmlxdWVJZGVudGlmaWVyLmlkXTogVW5pcXVlSWRlbnRpZmllcixcbiAgW0ludE4uaWRdOiBJbnROLFxuICBbTlRleHQuaWRdOiBOVGV4dCxcbiAgW0JpdE4uaWRdOiBCaXROLFxuICBbRGVjaW1hbE4uaWRdOiBEZWNpbWFsTixcbiAgW051bWVyaWNOLmlkXTogTnVtZXJpY04sXG4gIFtGbG9hdE4uaWRdOiBGbG9hdE4sXG4gIFtNb25leU4uaWRdOiBNb25leU4sXG4gIFtEYXRlVGltZU4uaWRdOiBEYXRlVGltZU4sXG4gIFtWYXJCaW5hcnkuaWRdOiBWYXJCaW5hcnksXG4gIFtWYXJDaGFyLmlkXTogVmFyQ2hhcixcbiAgW0JpbmFyeS5pZF06IEJpbmFyeSxcbiAgW0NoYXIuaWRdOiBDaGFyLFxuICBbTlZhckNoYXIuaWRdOiBOVmFyQ2hhcixcbiAgW05DaGFyLmlkXTogTkNoYXIsXG4gIFtYbWwuaWRdOiBYbWwsXG4gIFtUaW1lLmlkXTogVGltZSxcbiAgW0RhdGUuaWRdOiBEYXRlLFxuICBbRGF0ZVRpbWUyLmlkXTogRGF0ZVRpbWUyLFxuICBbRGF0ZVRpbWVPZmZzZXQuaWRdOiBEYXRlVGltZU9mZnNldCxcbiAgW1VEVC5pZF06IFVEVCxcbiAgW1RWUC5pZF06IFRWUCxcbiAgW1ZhcmlhbnQuaWRdOiBWYXJpYW50LFxufTtcblxuLyoqXG4gKiA8dGFibGU+XG4gKiA8dGhlYWQ+XG4gKiAgIDx0cj5cbiAqICAgICA8dGg+VHlwZTwvdGg+XG4gKiAgICAgPHRoPkNvbnN0YW50PC90aD5cbiAqICAgICA8dGg+SmF2YVNjcmlwdDwvdGg+XG4gKiAgICAgPHRoPlJlc3VsdCBzZXQ8L3RoPlxuICogICAgIDx0aD5QYXJhbWV0ZXI8L3RoPlxuICogICA8L3RyPlxuICogPC90aGVhZD5cbiAqXG4gKiA8dGJvZHk+XG4gKiAgIDx0ciBjbGFzcz1cImdyb3VwLWhlYWRpbmdcIj5cbiAqICAgICA8dGggY29sc3Bhbj1cIjVcIj5FeGFjdCBudW1lcmljczwvdGg+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+Yml0PC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuQml0XV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+Ym9vbGVhbjwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPnRpbnlpbnQ8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5UaW55SW50XV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+bnVtYmVyPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+c21hbGxpbnQ8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5TbWFsbEludF1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPm51bWJlcjwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPmludDwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLkludF1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPm51bWJlcjwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPmJpZ2ludDwvY29kZT48c3VwPjE8L3N1cD48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLkJpZ0ludF1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPnN0cmluZzwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPm51bWVyaWM8L2NvZGU+PHN1cD4yPC9zdXA+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5OdW1lcmljXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+bnVtYmVyPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+ZGVjaW1hbDwvY29kZT48c3VwPjI8L3N1cD48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLkRlY2ltYWxdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5udW1iZXI8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5zbWFsbG1vbmV5PC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuU21hbGxNb25leV1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPm51bWJlcjwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPm1vbmV5PC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuTW9uZXldXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5udW1iZXI8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqIDwvdGJvZHk+XG4gKlxuICogPHRib2R5PlxuICogICA8dHIgY2xhc3M9XCJncm91cC1oZWFkaW5nXCI+XG4gKiAgICAgPHRoIGNvbHNwYW49XCI1XCI+QXBwcm94aW1hdGUgbnVtZXJpY3M8L3RoPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPmZsb2F0PC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuRmxvYXRdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5udW1iZXI8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5yZWFsPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuUmVhbF1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPm51bWJlcjwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogPC90Ym9keT5cbiAqXG4gKiA8dGJvZHk+XG4gKiAgIDx0ciBjbGFzcz1cImdyb3VwLWhlYWRpbmdcIj5cbiAqICAgICA8dGggY29sc3Bhbj1cIjRcIj5EYXRlIGFuZCBUaW1lPC90aD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5zbWFsbGRhdGV0aW1lPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuU21hbGxEYXRlVGltZV1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPkRhdGU8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5kYXRldGltZTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLkRhdGVUaW1lXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+RGF0ZTwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPmRhdGV0aW1lMjwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLkRhdGVUaW1lMl1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPkRhdGU8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5kYXRldGltZW9mZnNldDwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLkRhdGVUaW1lT2Zmc2V0XV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+RGF0ZTwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPnRpbWU8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5UaW1lXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+RGF0ZTwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPmRhdGU8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5EYXRlXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+RGF0ZTwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogPC90Ym9keT5cbiAqXG4gKiA8dGJvZHk+XG4gKiAgIDx0ciBjbGFzcz1cImdyb3VwLWhlYWRpbmdcIj5cbiAqICAgICA8dGggY29sc3Bhbj1cIjRcIj5DaGFyYWN0ZXIgU3RyaW5nczwvdGg+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+Y2hhcjwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLkNoYXJdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5zdHJpbmc8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT52YXJjaGFyPC9jb2RlPjxzdXA+Mzwvc3VwPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuVmFyQ2hhcl1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPnN0cmluZzwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPnRleHQ8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5UZXh0XV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+c3RyaW5nPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiA8L3Rib2R5PlxuICpcbiAqIDx0Ym9keT5cbiAqICAgPHRyIGNsYXNzPVwiZ3JvdXAtaGVhZGluZ1wiPlxuICogICAgIDx0aCBjb2xzcGFuPVwiNFwiPlVuaWNvZGUgU3RyaW5nczwvdGg+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+bmNoYXI8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5OQ2hhcl1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPnN0cmluZzwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPm52YXJjaGFyPC9jb2RlPjxzdXA+Mzwvc3VwPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuTlZhckNoYXJdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5zdHJpbmc8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5udGV4dDwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLk5UZXh0XV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+c3RyaW5nPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPi08L3RkPlxuICogICA8L3RyPlxuICogPC90Ym9keT5cbiAqXG4gKiA8dGJvZHk+XG4gKiAgIDx0ciBjbGFzcz1cImdyb3VwLWhlYWRpbmdcIj5cbiAqICAgICA8dGggY29sc3Bhbj1cIjVcIj5CaW5hcnkgU3RyaW5nczxzdXA+NDwvc3VwPjwvdGg+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+YmluYXJ5PC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuQmluYXJ5XV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+QnVmZmVyPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+dmFyYmluYXJ5PC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuVmFyQmluYXJ5XV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+QnVmZmVyPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+aW1hZ2U8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5JbWFnZV1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPkJ1ZmZlcjwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogPC90Ym9keT5cbiAqXG4gKiA8dGJvZHk+XG4gKiAgIDx0ciBjbGFzcz1cImdyb3VwLWhlYWRpbmdcIj5cbiAqICAgICA8dGggY29sc3Bhbj1cIjVcIj5PdGhlciBEYXRhIFR5cGVzPC90aD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5UVlA8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5UVlBdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5PYmplY3Q8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+LTwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+VURUPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuVURUXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+QnVmZmVyPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPi08L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPnVuaXF1ZWlkZW50aWZpZXI8L2NvZGU+PHN1cD40PC9zdXA+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5VbmlxdWVJZGVudGlmaWVyXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+c3RyaW5nPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+dmFyaWFudDwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLlZhcmlhbnRdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5hbnk8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+LTwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+eG1sPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuWG1sXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+c3RyaW5nPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPi08L3RkPlxuICogICA8L3RyPlxuICogPC90Ym9keT5cbiAqIDwvdGFibGU+XG4gKlxuICogPG9sPlxuICogICA8bGk+XG4gKiAgICAgPGg0PkJpZ0ludDwvaDQ+XG4gKiAgICAgPHA+XG4gKiAgICAgICBWYWx1ZXMgYXJlIHJldHVybmVkIGFzIGEgc3RyaW5nLiBUaGlzIGlzIGJlY2F1c2UgdmFsdWVzIGNhbiBleGNlZWQgNTMgYml0cyBvZiBzaWduaWZpY2FudCBkYXRhLCB3aGljaCBpcyBncmVhdGVyIHRoYW4gYVxuICogICAgICAgSmF2YXNjcmlwdCA8Y29kZT5udW1iZXI8L2NvZGU+IHR5cGUgY2FuIHJlcHJlc2VudCBhcyBhbiBpbnRlZ2VyLlxuICogICAgIDwvcD5cbiAqICAgPC9saT5cbiAqICAgPGxpPlxuICogICAgIDxoND5OdW1lcmljYWwsIERlY2ltYWw8L2g0PlxuICogICAgIDxwPlxuICogICAgICAgRm9yIGlucHV0IHBhcmFtZXRlcnMsIGRlZmF1bHQgcHJlY2lzaW9uIGlzIDE4IGFuZCBkZWZhdWx0IHNjYWxlIGlzIDAuIE1heGltdW0gc3VwcG9ydGVkIHByZWNpc2lvbiBpcyAxOS5cbiAqICAgICA8L3A+XG4gKiAgIDwvbGk+XG4gKiAgIDxsaT5cbiAqICAgICA8aDQ+VmFyQ2hhciwgTlZhckNoYXI8L2g0PlxuICogICAgIDxwPlxuICogICAgICAgPGNvZGU+dmFyY2hhcihtYXgpPC9jb2RlPiBhbmQgPGNvZGU+bnZhcmNoYXIobWF4KTwvY29kZT4gYXJlIGFsc28gc3VwcG9ydGVkLlxuICogICAgIDwvcD5cbiAqICAgPC9saT5cbiAqICAgPGxpPlxuICogICAgIDxoND5VbmlxdWVJZGVudGlmaWVyPC9oND5cbiAqICAgICA8cD5cbiAqICAgICAgIFZhbHVlcyBhcmUgcmV0dXJuZWQgYXMgYSAxNiBieXRlIGhleGFkZWNpbWFsIHN0cmluZy5cbiAqICAgICA8L3A+XG4gKiAgICAgPHA+XG4gKiAgICAgICBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIGJ5dGVzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgY2hhcmFjdGVyIHJlcHJlc2VudGF0aW9uLiBTZWVcbiAqICAgICAgIDxhIGhyZWY9XCJodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXMxOTAyMTUuYXNweFwiPlVzaW5nIHVuaXF1ZWlkZW50aWZpZXIgRGF0YTwvYT5cbiAqICAgICAgIGZvciBhbiBleGFtcGxlIG9mIHRoZSBkaWZmZXJlbnQgb3JkZXJpbmcgb2YgYnl0ZXMuXG4gKiAgICAgPC9wPlxuICogICA8L2xpPlxuICogPC9vbD5cbiAqL1xuZXhwb3J0IGNvbnN0IFRZUEVTID0ge1xuICBUaW55SW50LFxuICBCaXQsXG4gIFNtYWxsSW50LFxuICBJbnQsXG4gIFNtYWxsRGF0ZVRpbWUsXG4gIFJlYWwsXG4gIE1vbmV5LFxuICBEYXRlVGltZSxcbiAgRmxvYXQsXG4gIERlY2ltYWwsXG4gIE51bWVyaWMsXG4gIFNtYWxsTW9uZXksXG4gIEJpZ0ludCxcbiAgSW1hZ2UsXG4gIFRleHQsXG4gIFVuaXF1ZUlkZW50aWZpZXIsXG4gIE5UZXh0LFxuICBWYXJCaW5hcnksXG4gIFZhckNoYXIsXG4gIEJpbmFyeSxcbiAgQ2hhcixcbiAgTlZhckNoYXIsXG4gIE5DaGFyLFxuICBYbWwsXG4gIFRpbWUsXG4gIERhdGUsXG4gIERhdGVUaW1lMixcbiAgRGF0ZVRpbWVPZmZzZXQsXG4gIFVEVCxcbiAgVFZQLFxuICBWYXJpYW50XG59O1xuXG5leHBvcnQgY29uc3QgdHlwZUJ5TmFtZSA9IFRZUEVTO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxJQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxJQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxLQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxNQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUSxTQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyxNQUFBLEdBQUFWLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBVSxRQUFBLEdBQUFYLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBVyxRQUFBLEdBQUFaLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBWSxXQUFBLEdBQUFiLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBYSxPQUFBLEdBQUFkLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBYyxNQUFBLEdBQUFmLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBZSxLQUFBLEdBQUFoQixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWdCLGlCQUFBLEdBQUFqQixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWlCLEtBQUEsR0FBQWxCLHNCQUFBLENBQUFDLE9BQUE7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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1DLEtBQUssR0FBQXpDLE9BQUEsQ0FBQXlDLEtBQUEsR0FBRztFQUNuQnRDLE9BQU8sRUFBUEEsZ0JBQU87RUFDUEMsR0FBRyxFQUFIQSxZQUFHO0VBQ0hDLFFBQVEsRUFBUkEsaUJBQVE7RUFDUkMsR0FBRyxFQUFIQSxZQUFHO0VBQ0hDLGFBQWEsRUFBYkEsc0JBQWE7RUFDYkMsSUFBSSxFQUFKQSxhQUFJO0VBQ0pDLEtBQUssRUFBTEEsY0FBSztFQUNMQyxRQUFRLEVBQVJBLGlCQUFRO0VBQ1JDLEtBQUssRUFBTEEsY0FBSztFQUNMQyxPQUFPLEVBQVBBLGdCQUFPO0VBQ1BDLE9BQU8sRUFBUEEsZ0JBQU87RUFDUEMsVUFBVSxFQUFWQSxtQkFBVTtFQUNWQyxNQUFNLEVBQU5BLGVBQU07RUFDTkMsS0FBSyxFQUFMQSxjQUFLO0VBQ0xDLElBQUksRUFBSkEsYUFBSTtFQUNKQyxnQkFBZ0IsRUFBaEJBLHlCQUFnQjtFQUNoQkUsS0FBSyxFQUFMQSxjQUFLO0VBQ0xPLFNBQVMsRUFBVEEsa0JBQVM7RUFDVEMsT0FBTyxFQUFQQSxnQkFBTztFQUNQQyxNQUFNLEVBQU5BLGVBQU07RUFDTkMsSUFBSSxFQUFKQSxhQUFJO0VBQ0pDLFFBQVEsRUFBUkEsaUJBQVE7RUFDUkMsS0FBSyxFQUFMQSxjQUFLO0VBQ0xDLEdBQUcsRUFBSEEsWUFBRztFQUNIQyxJQUFJLEVBQUpBLGFBQUk7RUFDSkMsSUFBSSxFQUFKQSxhQUFJO0VBQ0pDLFNBQVMsRUFBVEEsa0JBQVM7RUFDVEMsY0FBYyxFQUFkQSx1QkFBYztFQUNkQyxHQUFHLEVBQUhBLFlBQUc7RUFDSEMsR0FBRyxFQUFIQSxZQUFHO0VBQ0hDLE9BQU8sRUFBUEE7QUFDRixDQUFDO0FBRU0sTUFBTUUsVUFBVSxHQUFBMUMsT0FBQSxDQUFBMEMsVUFBQSxHQUFHRCxLQUFLIiwiaWdub3JlTGlzdCI6W119