diff --git a/app/components/neo4j-driver/.bower.json b/app/components/neo4j-driver/.bower.json index 72b24e2523c..aac7621b24b 100644 --- a/app/components/neo4j-driver/.bower.json +++ b/app/components/neo4j-driver/.bower.json @@ -37,12 +37,12 @@ "url": "https://github.com/neo4j/neo4j-javascript-driver.git" }, "homepage": "https://github.com/neo4j/neo4j-javascript-driver", - "version": "1.0.3", - "_release": "1.0.3", + "version": "1.0.4", + "_release": "1.0.4", "_resolution": { "type": "version", - "tag": "1.0.3", - "commit": "b2e0349794acec001757a5ce9b14dd8fd7eb9893" + "tag": "1.0.4", + "commit": "d13e0245a955445a5d7611c38e1c68d8600861ca" }, "_source": "https://github.com/neo4j/neo4j-javascript-driver.git", "_target": "^1.0.0", diff --git a/app/components/neo4j-driver/README.md b/app/components/neo4j-driver/README.md index 6c43e47f80f..66d593e32d3 100644 --- a/app/components/neo4j-driver/README.md +++ b/app/components/neo4j-driver/README.md @@ -2,7 +2,7 @@ A database driver for Neo4j 3.0.0+. -Find detailed docs at [alpha.neohq.net](http://alpha.neohq.net/docs/javascript-driver/). +Find detailed docs [here](http://neo4j.com/docs/api/javascript-driver/current/). ## Include module in Node.js application diff --git a/app/components/neo4j-driver/lib/browser/neo4j-web.js b/app/components/neo4j-driver/lib/browser/neo4j-web.js index c3b96641781..d2938f575e6 100644 --- a/app/components/neo4j-driver/lib/browser/neo4j-web.js +++ b/app/components/neo4j-driver/lib/browser/neo4j-web.js @@ -25182,6 +25182,13 @@ var _ConnectionStreamObserver = (function (_StreamObserver) { this._hasFailed = true; } } + }, { + key: 'onCompleted', + value: function onCompleted(message) { + if (this._driver.onCompleted) { + this._driver.onCompleted(message); + } + } }]); return _ConnectionStreamObserver; @@ -27245,16 +27252,35 @@ function userHome() { return process.env[process.platform == 'win32' ? 'USERPROFILE' : 'HOME']; } +function mkFullPath(pathToCreate) { + try { + _fs2['default'].mkdirSync(pathToCreate); + } catch (e) { + if (e.code === 'ENOENT') { + // Create parent dir + mkFullPath(_path2['default'].dirname(pathToCreate)); + // And now try again + mkFullPath(pathToCreate); + return; + } + if (e.code === 'EEXIST') { + return; + } + throw e; + } +} + function loadFingerprint(serverId, knownHostsPath, cb) { - if (!_fs2['default'].existsSync(knownHostsPath)) { - cb(null); - return; + try { + _fs2['default'].accessSync(knownHostsPath); + } catch (e) { + return cb(null); } var found = false; require('readline').createInterface({ input: _fs2['default'].createReadStream(knownHostsPath) }).on('line', function (line) { - if (line.startsWith(serverId)) { + if (!found && line.startsWith(serverId)) { found = true; cb(line.split(" ")[1]); } @@ -27265,11 +27291,31 @@ function loadFingerprint(serverId, knownHostsPath, cb) { }); } -function storeFingerprint(serverId, knownHostsPath, fingerprint) { +var _lockFingerprintFromAppending = {}; +function storeFingerprint(serverId, knownHostsPath, fingerprint, cb) { + // we check if the serverId has been appended + if (!!_lockFingerprintFromAppending[serverId]) { + // if it has, we ignore it + return cb(null); + } + + // we make the line as appended + // ( 1 is more efficient to store than true because true is an oddball ) + _lockFingerprintFromAppending[serverId] = 1; + + // If file doesn't exist, create full path to it + try { + _fs2['default'].accessSync(knownHostsPath); + } catch (_) { + mkFullPath(_path2['default'].dirname(knownHostsPath)); + } + _fs2['default'].appendFile(knownHostsPath, serverId + " " + fingerprint + _os.EOL, "utf8", function (err) { + delete _lockFingerprintFromAppending[serverId]; if (err) { console.log(err); } + return cb(err); }); } @@ -27323,8 +27369,12 @@ var TrustStrategy = { if (knownFingerprint === serverFingerprint) { onSuccess(); } else if (knownFingerprint == null) { - storeFingerprint(serverId, knownHostsPath, serverFingerprint); - onSuccess(); + storeFingerprint(serverId, knownHostsPath, serverFingerprint, function (err) { + if (err) { + return onFailure(err); + } + return onSuccess(); + }); } else { onFailure((0, _error.newError)("Database encryption certificate has changed, and no longer " + "matches the certificate stored for " + serverId + " in `" + knownHostsPath + "`. As a security precaution, this driver will not automatically trust the new " + "certificate, because doing so would allow an attacker to pretend to be the Neo4j " + "instance we want to connect to. The certificate provided by the server looks like: " + serverCert + ". If you trust that this certificate is valid, simply remove the line " + "starting with " + serverId + " in `" + knownHostsPath + "`, and the driver will " + "update the file with the new certificate. You can configure which file the driver " + "should use to store this information by setting `knownHosts` to another path in " + "your driver configuration - and you can disable encryption there as well using " + "`encrypted:false`.")); } @@ -28070,6 +28120,7 @@ var _mappers = { */ var Connection = (function () { + /** * @constructor * @param channel - channel with a 'write' function and a 'onmessage' @@ -28247,17 +28298,26 @@ var Connection = (function () { }, { key: "initialize", value: function initialize(clientName, token, observer) { + var _this2 = this; + this._queueObserver(observer); - this._packer.packStruct(INIT, [clientName, token]); + this._packer.packStruct(INIT, [this._packable(clientName), this._packable(token)], function (err) { + return _this2._handleFatalError(err); + }); this._chunker.messageBoundary(); + this.sync(); } /** Queue a RUN-message to be sent to the database */ }, { key: "run", value: function run(statement, params, observer) { + var _this3 = this; + this._queueObserver(observer); - this._packer.packStruct(RUN, [statement, params]); + this._packer.packStruct(RUN, [this._packable(statement), this._packable(params)], function (err) { + return _this3._handleFatalError(err); + }); this._chunker.messageBoundary(); } @@ -28265,8 +28325,12 @@ var Connection = (function () { }, { key: "pullAll", value: function pullAll(observer) { + var _this4 = this; + this._queueObserver(observer); - this._packer.packStruct(PULL_ALL); + this._packer.packStruct(PULL_ALL, [], function (err) { + return _this4._handleFatalError(err); + }); this._chunker.messageBoundary(); } @@ -28274,8 +28338,12 @@ var Connection = (function () { }, { key: "discardAll", value: function discardAll(observer) { + var _this5 = this; + this._queueObserver(observer); - this._packer.packStruct(DISCARD_ALL); + this._packer.packStruct(DISCARD_ALL, [], function (err) { + return _this5._handleFatalError(err); + }); this._chunker.messageBoundary(); } @@ -28283,6 +28351,8 @@ var Connection = (function () { }, { key: "reset", value: function reset(observer) { + var _this6 = this; + this._isHandlingFailure = true; var self = this; var wrappedObs = { @@ -28296,7 +28366,9 @@ var Connection = (function () { } }; this._queueObserver(wrappedObs); - this._packer.packStruct(RESET); + this._packer.packStruct(RESET, [], function (err) { + return _this6._handleFatalError(err); + }); this._chunker.messageBoundary(); } @@ -28304,8 +28376,12 @@ var Connection = (function () { }, { key: "_ackFailure", value: function _ackFailure(observer) { + var _this7 = this; + this._queueObserver(observer); - this._packer.packStruct(ACK_FAILURE); + this._packer.packStruct(ACK_FAILURE, [], function (err) { + return _this7._handleFatalError(err); + }); this._chunker.messageBoundary(); } }, { @@ -28354,6 +28430,15 @@ var Connection = (function () { value: function close(cb) { this._ch.close(cb); } + }, { + key: "_packable", + value: function _packable(value) { + var _this8 = this; + + return this._packer.packable(value, function (err) { + return _this8._handleFatalError(err); + }); + } }]); return Connection; @@ -28582,57 +28667,98 @@ var Packer = (function () { * @access private */ + /** + * Creates a packable function out of the provided value + * @param x the value to pack + * @param onError callback for the case when value cannot be packed + * @returns Function + */ + _createClass(Packer, [{ - key: "pack", - value: function pack(x) { + key: "packable", + value: function packable(x, onError) { + var _this = this; + if (x === null) { - this._ch.writeUInt8(NULL); + return function () { + return _this._ch.writeUInt8(NULL); + }; } else if (x === true) { - this._ch.writeUInt8(TRUE); + return function () { + return _this._ch.writeUInt8(TRUE); + }; } else if (x === false) { - this._ch.writeUInt8(FALSE); + return function () { + return _this._ch.writeUInt8(FALSE); + }; } else if (typeof x == "number") { - this.packFloat(x); + return function () { + return _this.packFloat(x); + }; } else if (typeof x == "string") { - this.packString(x); + return function () { + return _this.packString(x, onError); + }; } else if (x instanceof _integer.Integer) { - this.packInteger(x); + return function () { + return _this.packInteger(x); + }; } else if (x instanceof Array) { - this.packListHeader(x.length); - for (var i = 0; i < x.length; i++) { - this.pack(x[i] === undefined ? null : x[i]); - } + return function () { + _this.packListHeader(x.length, onError); + for (var _i = 0; _i < x.length; _i++) { + _this.packable(x[_i] === undefined ? null : x[_i], onError)(); + } + }; } else if (x instanceof Structure) { - this.packStruct(x.signature, x.fields); + var packableFields = []; + for (var i = 0; i < x.fields.length; i++) { + packableFields[i] = this.packable(x.fields[i], onError); + } + return function () { + return _this.packStruct(x.signature, packableFields); + }; } else if (typeof x == "object") { - var keys = Object.keys(x); + return function () { + var keys = Object.keys(x); - var count = 0; - for (var i = 0; i < keys.length; i++) { - if (x[keys[i]] !== undefined) { - count++; + var count = 0; + for (var _i2 = 0; _i2 < keys.length; _i2++) { + if (x[keys[_i2]] !== undefined) { + count++; + } } - } - - this.packMapHeader(count); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (x[key] !== undefined) { - this.packString(key); - this.pack(x[key]); + _this.packMapHeader(count, onError); + for (var _i3 = 0; _i3 < keys.length; _i3++) { + var key = keys[_i3]; + if (x[key] !== undefined) { + _this.packString(key); + _this.packable(x[key], onError)(); + } } - } + }; } else { - throw (0, _error.newError)("Cannot pack this value: " + x); + if (onError) { + onError((0, _error.newError)("Cannot pack this value: " + x)); + } + return function () { + return undefined; + }; } } + + /** + * Packs a struct + * @param signature the signature of the struct + * @param packableFields the fields of the struct, make sure you call `packable on all fields` + */ }, { key: "packStruct", - value: function packStruct(signature, fields) { - fields = fields || []; - this.packStructHeader(fields.length, signature); - for (var i = 0; i < fields.length; i++) { - this.pack(fields[i]); + value: function packStruct(signature, packableFields, onError) { + packableFields = packableFields || []; + this.packStructHeader(packableFields.length, signature, onError); + for (var i = 0; i < packableFields.length; i++) { + packableFields[i](); } } }, { @@ -28666,7 +28792,7 @@ var Packer = (function () { } }, { key: "packString", - value: function packString(x) { + value: function packString(x, onError) { var bytes = _utf82["default"].encode(x); var size = bytes.length; if (size < 0x10) { @@ -28689,12 +28815,12 @@ var Packer = (function () { this._ch.writeUInt8(size % 256); this._ch.writeBytes(bytes); } else { - throw (0, _error.newError)("UTF-8 strings of size " + size + " are not supported"); + onError((0, _error.newError)("UTF-8 strings of size " + size + " are not supported")); } } }, { key: "packListHeader", - value: function packListHeader(size) { + value: function packListHeader(size, onError) { if (size < 0x10) { this._ch.writeUInt8(TINY_LIST | size); } else if (size < 0x100) { @@ -28711,12 +28837,12 @@ var Packer = (function () { this._ch.writeUInt8((size / 256 >> 0) % 256); this._ch.writeUInt8(size % 256); } else { - throw (0, _error.newError)("Lists of size " + size + " are not supported"); + onError((0, _error.newError)("Lists of size " + size + " are not supported")); } } }, { key: "packMapHeader", - value: function packMapHeader(size) { + value: function packMapHeader(size, onError) { if (size < 0x10) { this._ch.writeUInt8(TINY_MAP | size); } else if (size < 0x100) { @@ -28733,12 +28859,12 @@ var Packer = (function () { this._ch.writeUInt8((size / 256 >> 0) % 256); this._ch.writeUInt8(size % 256); } else { - throw (0, _error.newError)("Maps of size " + size + " are not supported"); + onError((0, _error.newError)("Maps of size " + size + " are not supported")); } } }, { key: "packStructHeader", - value: function packStructHeader(size, signature) { + value: function packStructHeader(size, signature, onError) { if (size < 0x10) { this._ch.writeUInt8(TINY_STRUCT | size); this._ch.writeUInt8(signature); @@ -28751,7 +28877,7 @@ var Packer = (function () { this._ch.writeUInt8(size / 256 >> 0); this._ch.writeUInt8(size % 256); } else { - throw (0, _error.newError)("Structures of size " + size + " are not supported"); + onError((0, _error.newError)("Structures of size " + size + " are not supported")); } } }]); diff --git a/app/components/neo4j-driver/lib/browser/neo4j-web.min.js b/app/components/neo4j-driver/lib/browser/neo4j-web.min.js index 9bf639e4d35..0768cfb1b87 100644 --- a/app/components/neo4j-driver/lib/browser/neo4j-web.min.js +++ b/app/components/neo4j-driver/lib/browser/neo4j-web.min.js @@ -13,6 +13,6 @@ gb18030:[19970,19972,19973,19974,19983,19986,19991,19999,2e4,20001,20003,20006,2 "gb18030-ranges":[[0,128],[36,165],[38,169],[45,178],[50,184],[81,216],[89,226],[95,235],[96,238],[100,244],[103,248],[104,251],[105,253],[109,258],[126,276],[133,284],[148,300],[172,325],[175,329],[179,334],[208,364],[306,463],[307,465],[308,467],[309,469],[310,471],[311,473],[312,475],[313,477],[341,506],[428,594],[443,610],[544,712],[545,716],[558,730],[741,930],[742,938],[749,962],[750,970],[805,1026],[819,1104],[820,1106],[7922,8209],[7924,8215],[7925,8218],[7927,8222],[7934,8231],[7943,8241],[7944,8244],[7945,8246],[7950,8252],[8062,8365],[8148,8452],[8149,8454],[8152,8458],[8164,8471],[8174,8482],[8236,8556],[8240,8570],[8262,8596],[8264,8602],[8374,8713],[8380,8720],[8381,8722],[8384,8726],[8388,8731],[8390,8737],[8392,8740],[8393,8742],[8394,8748],[8396,8751],[8401,8760],[8406,8766],[8416,8777],[8419,8781],[8424,8787],[8437,8802],[8439,8808],[8445,8816],[8482,8854],[8485,8858],[8496,8870],[8521,8896],[8603,8979],[8936,9322],[8946,9372],[9046,9548],[9050,9588],[9063,9616],[9066,9622],[9076,9634],[9092,9652],[9100,9662],[9108,9672],[9111,9676],[9113,9680],[9131,9702],[9162,9735],[9164,9738],[9218,9793],[9219,9795],[11329,11906],[11331,11909],[11334,11913],[11336,11917],[11346,11928],[11361,11944],[11363,11947],[11366,11951],[11370,11956],[11372,11960],[11375,11964],[11389,11979],[11682,12284],[11686,12292],[11687,12312],[11692,12319],[11694,12330],[11714,12351],[11716,12436],[11723,12447],[11725,12535],[11730,12543],[11736,12586],[11982,12842],[11989,12850],[12102,12964],[12336,13200],[12348,13215],[12350,13218],[12384,13253],[12393,13263],[12395,13267],[12397,13270],[12510,13384],[12553,13428],[12851,13727],[12962,13839],[12973,13851],[13738,14617],[13823,14703],[13919,14801],[13933,14816],[14080,14964],[14298,15183],[14585,15471],[14698,15585],[15583,16471],[15847,16736],[16318,17208],[16434,17325],[16438,17330],[16481,17374],[16729,17623],[17102,17997],[17122,18018],[17315,18212],[17320,18218],[17402,18301],[17418,18318],[17859,18760],[17909,18811],[17911,18814],[17915,18820],[17916,18823],[17936,18844],[17939,18848],[17961,18872],[18664,19576],[18703,19620],[18814,19738],[18962,19887],[19043,40870],[33469,59244],[33470,59336],[33471,59367],[33484,59413],[33485,59417],[33490,59423],[33497,59431],[33501,59437],[33505,59443],[33513,59452],[33520,59460],[33536,59478],[33550,59493],[37845,63789],[37921,63866],[37948,63894],[38029,63976],[38038,63986],[38064,64016],[38065,64018],[38066,64021],[38069,64025],[38075,64034],[38076,64037],[38078,64042],[39108,65074],[39109,65093],[39113,65107],[39114,65112],[39115,65127],[39116,65132],[39265,65375],[39394,65510],[189e3,65536]],jis0208:[12288,12289,12290,65292,65294,12539,65306,65307,65311,65281,12443,12444,180,65344,168,65342,65507,65343,12541,12542,12445,12446,12291,20189,12293,12294,12295,12540,8213,8208,65295,65340,65374,8741,65372,8230,8229,8216,8217,8220,8221,65288,65289,12308,12309,65339,65341,65371,65373,12296,12297,12298,12299,12300,12301,12302,12303,12304,12305,65291,65293,177,215,247,65309,8800,65308,65310,8806,8807,8734,8756,9794,9792,176,8242,8243,8451,65509,65284,65504,65505,65285,65283,65286,65290,65312,167,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,9661,9660,8251,12306,8594,8592,8593,8595,12307,null,null,null,null,null,null,null,null,null,null,null,8712,8715,8838,8839,8834,8835,8746,8745,null,null,null,null,null,null,null,null,8743,8744,65506,8658,8660,8704,8707,null,null,null,null,null,null,null,null,null,null,null,8736,8869,8978,8706,8711,8801,8786,8810,8811,8730,8765,8733,8757,8747,8748,null,null,null,null,null,null,null,8491,8240,9839,9837,9834,8224,8225,182,null,null,null,null,9711,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,null,null,null,null,null,null,null,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,null,null,null,null,null,null,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,null,null,null,null,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,null,null,null,null,null,null,null,null,null,null,null,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,null,null,null,null,null,null,null,null,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,null,null,null,null,null,null,null,null,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,null,null,null,null,null,null,null,null,null,null,null,null,null,9472,9474,9484,9488,9496,9492,9500,9516,9508,9524,9532,9473,9475,9487,9491,9499,9495,9507,9523,9515,9531,9547,9504,9519,9512,9527,9535,9501,9520,9509,9528,9538,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9322,9323,9324,9325,9326,9327,9328,9329,9330,9331,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,null,13129,13076,13090,13133,13080,13095,13059,13110,13137,13143,13069,13094,13091,13099,13130,13115,13212,13213,13214,13198,13199,13252,13217,null,null,null,null,null,null,null,null,13179,12317,12319,8470,13261,8481,12964,12965,12966,12967,12968,12849,12850,12857,13182,13181,13180,8786,8801,8747,8750,8721,8730,8869,8736,8735,8895,8757,8745,8746,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,20124,21782,23043,38463,21696,24859,25384,23030,36898,33909,33564,31312,24746,25569,28197,26093,33894,33446,39925,26771,22311,26017,25201,23451,22992,34427,39156,32098,32190,39822,25110,31903,34999,23433,24245,25353,26263,26696,38343,38797,26447,20197,20234,20301,20381,20553,22258,22839,22996,23041,23561,24799,24847,24944,26131,26885,28858,30031,30064,31227,32173,32239,32963,33806,34915,35586,36949,36986,21307,20117,20133,22495,32946,37057,30959,19968,22769,28322,36920,31282,33576,33419,39983,20801,21360,21693,21729,22240,23035,24341,39154,28139,32996,34093,38498,38512,38560,38907,21515,21491,23431,28879,32701,36802,38632,21359,40284,31418,19985,30867,33276,28198,22040,21764,27421,34074,39995,23013,21417,28006,29916,38287,22082,20113,36939,38642,33615,39180,21473,21942,23344,24433,26144,26355,26628,27704,27891,27945,29787,30408,31310,38964,33521,34907,35424,37613,28082,30123,30410,39365,24742,35585,36234,38322,27022,21421,20870,22290,22576,22852,23476,24310,24616,25513,25588,27839,28436,28814,28948,29017,29141,29503,32257,33398,33489,34199,36960,37467,40219,22633,26044,27738,29989,20985,22830,22885,24448,24540,25276,26106,27178,27431,27572,29579,32705,35158,40236,40206,40644,23713,27798,33659,20740,23627,25014,33222,26742,29281,20057,20474,21368,24681,28201,31311,38899,19979,21270,20206,20309,20285,20385,20339,21152,21487,22025,22799,23233,23478,23521,31185,26247,26524,26550,27468,27827,28779,29634,31117,31166,31292,31623,33457,33499,33540,33655,33775,33747,34662,35506,22057,36008,36838,36942,38686,34442,20420,23784,25105,29273,30011,33253,33469,34558,36032,38597,39187,39381,20171,20250,35299,22238,22602,22730,24315,24555,24618,24724,24674,25040,25106,25296,25913,39745,26214,26800,28023,28784,30028,30342,32117,33445,34809,38283,38542,35997,20977,21182,22806,21683,23475,23830,24936,27010,28079,30861,33995,34903,35442,37799,39608,28012,39336,34521,22435,26623,34510,37390,21123,22151,21508,24275,25313,25785,26684,26680,27579,29554,30906,31339,35226,35282,36203,36611,37101,38307,38548,38761,23398,23731,27005,38989,38990,25499,31520,27179,27263,26806,39949,28511,21106,21917,24688,25324,27963,28167,28369,33883,35088,36676,19988,39993,21494,26907,27194,38788,26666,20828,31427,33970,37340,37772,22107,40232,26658,33541,33841,31909,21e3,33477,29926,20094,20355,20896,23506,21002,21208,21223,24059,21914,22570,23014,23436,23448,23515,24178,24185,24739,24863,24931,25022,25563,25954,26577,26707,26874,27454,27475,27735,28450,28567,28485,29872,29976,30435,30475,31487,31649,31777,32233,32566,32752,32925,33382,33694,35251,35532,36011,36996,37969,38291,38289,38306,38501,38867,39208,33304,20024,21547,23736,24012,29609,30284,30524,23721,32747,36107,38593,38929,38996,39e3,20225,20238,21361,21916,22120,22522,22855,23305,23492,23696,24076,24190,24524,25582,26426,26071,26082,26399,26827,26820,27231,24112,27589,27671,27773,30079,31048,23395,31232,32e3,24509,35215,35352,36020,36215,36556,36637,39138,39438,39740,20096,20605,20736,22931,23452,25135,25216,25836,27450,29344,30097,31047,32681,34811,35516,35696,25516,33738,38816,21513,21507,21931,26708,27224,35440,30759,26485,40653,21364,23458,33050,34384,36870,19992,20037,20167,20241,21450,21560,23470,24339,24613,25937,26429,27714,27762,27875,28792,29699,31350,31406,31496,32026,31998,32102,26087,29275,21435,23621,24040,25298,25312,25369,28192,34394,35377,36317,37624,28417,31142,39770,20136,20139,20140,20379,20384,20689,20807,31478,20849,20982,21332,21281,21375,21483,21932,22659,23777,24375,24394,24623,24656,24685,25375,25945,27211,27841,29378,29421,30703,33016,33029,33288,34126,37111,37857,38911,39255,39514,20208,20957,23597,26241,26989,23616,26354,26997,29577,26704,31873,20677,21220,22343,24062,37670,26020,27427,27453,29748,31105,31165,31563,32202,33465,33740,34943,35167,35641,36817,37329,21535,37504,20061,20534,21477,21306,29399,29590,30697,33510,36527,39366,39368,39378,20855,24858,34398,21936,31354,20598,23507,36935,38533,20018,27355,37351,23633,23624,25496,31391,27795,38772,36705,31402,29066,38536,31874,26647,32368,26705,37740,21234,21531,34219,35347,32676,36557,37089,21350,34952,31041,20418,20670,21009,20804,21843,22317,29674,22411,22865,24418,24452,24693,24950,24935,25001,25522,25658,25964,26223,26690,28179,30054,31293,31995,32076,32153,32331,32619,33550,33610,34509,35336,35427,35686,36605,38938,40335,33464,36814,39912,21127,25119,25731,28608,38553,26689,20625,27424,27770,28500,31348,32080,34880,35363,26376,20214,20537,20518,20581,20860,21048,21091,21927,22287,22533,23244,24314,25010,25080,25331,25458,26908,27177,29309,29356,29486,30740,30831,32121,30476,32937,35211,35609,36066,36562,36963,37749,38522,38997,39443,40568,20803,21407,21427,24187,24358,28187,28304,29572,29694,32067,33335,35328,35578,38480,20046,20491,21476,21628,22266,22993,23396,24049,24235,24359,25144,25925,26543,28246,29392,31946,34996,32929,32993,33776,34382,35463,36328,37431,38599,39015,40723,20116,20114,20237,21320,21577,21566,23087,24460,24481,24735,26791,27278,29786,30849,35486,35492,35703,37264,20062,39881,20132,20348,20399,20505,20502,20809,20844,21151,21177,21246,21402,21475,21521,21518,21897,22353,22434,22909,23380,23389,23439,24037,24039,24055,24184,24195,24218,24247,24344,24658,24908,25239,25304,25511,25915,26114,26179,26356,26477,26657,26775,27083,27743,27946,28009,28207,28317,30002,30343,30828,31295,31968,32005,32024,32094,32177,32789,32771,32943,32945,33108,33167,33322,33618,34892,34913,35611,36002,36092,37066,37237,37489,30783,37628,38308,38477,38917,39321,39640,40251,21083,21163,21495,21512,22741,25335,28640,35946,36703,40633,20811,21051,21578,22269,31296,37239,40288,40658,29508,28425,33136,29969,24573,24794,39592,29403,36796,27492,38915,20170,22256,22372,22718,23130,24680,25031,26127,26118,26681,26801,28151,30165,32058,33390,39746,20123,20304,21449,21766,23919,24038,24046,26619,27801,29811,30722,35408,37782,35039,22352,24231,25387,20661,20652,20877,26368,21705,22622,22971,23472,24425,25165,25505,26685,27507,28168,28797,37319,29312,30741,30758,31085,25998,32048,33756,35009,36617,38555,21092,22312,26448,32618,36001,20916,22338,38442,22586,27018,32948,21682,23822,22524,30869,40442,20316,21066,21643,25662,26152,26388,26613,31364,31574,32034,37679,26716,39853,31545,21273,20874,21047,23519,25334,25774,25830,26413,27578,34217,38609,30352,39894,25420,37638,39851,30399,26194,19977,20632,21442,23665,24808,25746,25955,26719,29158,29642,29987,31639,32386,34453,35715,36059,37240,39184,26028,26283,27531,20181,20180,20282,20351,21050,21496,21490,21987,22235,22763,22987,22985,23039,23376,23629,24066,24107,24535,24605,25351,25903,23388,26031,26045,26088,26525,27490,27515,27663,29509,31049,31169,31992,32025,32043,32930,33026,33267,35222,35422,35433,35430,35468,35566,36039,36060,38604,39164,27503,20107,20284,20365,20816,23383,23546,24904,25345,26178,27425,28363,27835,29246,29885,30164,30913,31034,32780,32819,33258,33940,36766,27728,40575,24335,35672,40235,31482,36600,23437,38635,19971,21489,22519,22833,23241,23460,24713,28287,28422,30142,36074,23455,34048,31712,20594,26612,33437,23649,34122,32286,33294,20889,23556,25448,36198,26012,29038,31038,32023,32773,35613,36554,36974,34503,37034,20511,21242,23610,26451,28796,29237,37196,37320,37675,33509,23490,24369,24825,20027,21462,23432,25163,26417,27530,29417,29664,31278,33131,36259,37202,39318,20754,21463,21610,23551,25480,27193,32172,38656,22234,21454,21608,23447,23601,24030,20462,24833,25342,27954,31168,31179,32066,32333,32722,33261,33311,33936,34886,35186,35728,36468,36655,36913,37195,37228,38598,37276,20160,20303,20805,21313,24467,25102,26580,27713,28171,29539,32294,37325,37507,21460,22809,23487,28113,31069,32302,31899,22654,29087,20986,34899,36848,20426,23803,26149,30636,31459,33308,39423,20934,24490,26092,26991,27529,28147,28310,28516,30462,32020,24033,36981,37255,38918,20966,21021,25152,26257,26329,28186,24246,32210,32626,26360,34223,34295,35576,21161,21465,22899,24207,24464,24661,37604,38500,20663,20767,21213,21280,21319,21484,21736,21830,21809,22039,22888,22974,23100,23477,23558,23567,23569,23578,24196,24202,24288,24432,25215,25220,25307,25484,25463,26119,26124,26157,26230,26494,26786,27167,27189,27836,28040,28169,28248,28988,28966,29031,30151,30465,30813,30977,31077,31216,31456,31505,31911,32057,32918,33750,33931,34121,34909,35059,35359,35388,35412,35443,35937,36062,37284,37478,37758,37912,38556,38808,19978,19976,19998,20055,20887,21104,22478,22580,22732,23330,24120,24773,25854,26465,26454,27972,29366,30067,31331,33976,35698,37304,37664,22065,22516,39166,25325,26893,27542,29165,32340,32887,33394,35302,39135,34645,36785,23611,20280,20449,20405,21767,23072,23517,23529,24515,24910,25391,26032,26187,26862,27035,28024,28145,30003,30137,30495,31070,31206,32051,33251,33455,34218,35242,35386,36523,36763,36914,37341,38663,20154,20161,20995,22645,22764,23563,29978,23613,33102,35338,36805,38499,38765,31525,35535,38920,37218,22259,21416,36887,21561,22402,24101,25512,27700,28810,30561,31883,32736,34928,36930,37204,37648,37656,38543,29790,39620,23815,23913,25968,26530,36264,38619,25454,26441,26905,33733,38935,38592,35070,28548,25722,23544,19990,28716,30045,26159,20932,21046,21218,22995,24449,24615,25104,25919,25972,26143,26228,26866,26646,27491,28165,29298,29983,30427,31934,32854,22768,35069,35199,35488,35475,35531,36893,37266,38738,38745,25993,31246,33030,38587,24109,24796,25114,26021,26132,26512,30707,31309,31821,32318,33034,36012,36196,36321,36447,30889,20999,25305,25509,25666,25240,35373,31363,31680,35500,38634,32118,33292,34633,20185,20808,21315,21344,23459,23554,23574,24029,25126,25159,25776,26643,26676,27849,27973,27927,26579,28508,29006,29053,26059,31359,31661,32218,32330,32680,33146,33307,33337,34214,35438,36046,36341,36984,36983,37549,37521,38275,39854,21069,21892,28472,28982,20840,31109,32341,33203,31950,22092,22609,23720,25514,26366,26365,26970,29401,30095,30094,30990,31062,31199,31895,32032,32068,34311,35380,38459,36961,40736,20711,21109,21452,21474,20489,21930,22766,22863,29245,23435,23652,21277,24803,24819,25436,25475,25407,25531,25805,26089,26361,24035,27085,27133,28437,29157,20105,30185,30456,31379,31967,32207,32156,32865,33609,33624,33900,33980,34299,35013,36208,36865,36973,37783,38684,39442,20687,22679,24974,33235,34101,36104,36896,20419,20596,21063,21363,24687,25417,26463,28204,36275,36895,20439,23646,36042,26063,32154,21330,34966,20854,25539,23384,23403,23562,25613,26449,36956,20182,22810,22826,27760,35409,21822,22549,22949,24816,25171,26561,33333,26965,38464,39364,39464,20307,22534,23550,32784,23729,24111,24453,24608,24907,25140,26367,27888,28382,32974,33151,33492,34955,36024,36864,36910,38538,40667,39899,20195,21488,22823,31532,37261,38988,40441,28381,28711,21331,21828,23429,25176,25246,25299,27810,28655,29730,35351,37944,28609,35582,33592,20967,34552,21482,21481,20294,36948,36784,22890,33073,24061,31466,36799,26842,35895,29432,40008,27197,35504,20025,21336,22022,22374,25285,25506,26086,27470,28129,28251,28845,30701,31471,31658,32187,32829,32966,34507,35477,37723,22243,22727,24382,26029,26262,27264,27573,30007,35527,20516,30693,22320,24347,24677,26234,27744,30196,31258,32622,33268,34584,36933,39347,31689,30044,31481,31569,33988,36880,31209,31378,33590,23265,30528,20013,20210,23449,24544,25277,26172,26609,27880,34411,34935,35387,37198,37619,39376,27159,28710,29482,33511,33879,36015,19969,20806,20939,21899,23541,24086,24115,24193,24340,24373,24427,24500,25074,25361,26274,26397,28526,29266,30010,30522,32884,33081,33144,34678,35519,35548,36229,36339,37530,38263,38914,40165,21189,25431,30452,26389,27784,29645,36035,37806,38515,27941,22684,26894,27084,36861,37786,30171,36890,22618,26626,25524,27131,20291,28460,26584,36795,34086,32180,37716,26943,28528,22378,22775,23340,32044,29226,21514,37347,40372,20141,20302,20572,20597,21059,35998,21576,22564,23450,24093,24213,24237,24311,24351,24716,25269,25402,25552,26799,27712,30855,31118,31243,32224,33351,35330,35558,36420,36883,37048,37165,37336,40718,27877,25688,25826,25973,28404,30340,31515,36969,37841,28346,21746,24505,25764,36685,36845,37444,20856,22635,22825,23637,24215,28155,32399,29980,36028,36578,39003,28857,20253,27583,28593,3e4,38651,20814,21520,22581,22615,22956,23648,24466,26007,26460,28193,30331,33759,36077,36884,37117,37709,30757,30778,21162,24230,22303,22900,24594,20498,20826,20908,20941,20992,21776,22612,22616,22871,23445,23798,23947,24764,25237,25645,26481,26691,26812,26847,30423,28120,28271,28059,28783,29128,24403,30168,31095,31561,31572,31570,31958,32113,21040,33891,34153,34276,35342,35588,35910,36367,36867,36879,37913,38518,38957,39472,38360,20685,21205,21516,22530,23566,24999,25758,27934,30643,31461,33012,33796,36947,37509,23776,40199,21311,24471,24499,28060,29305,30563,31167,31716,27602,29420,35501,26627,27233,20984,31361,26932,23626,40182,33515,23493,37193,28702,22136,23663,24775,25958,27788,35930,36929,38931,21585,26311,37389,22856,37027,20869,20045,20970,34201,35598,28760,25466,37707,26978,39348,32260,30071,21335,26976,36575,38627,27741,20108,23612,24336,36841,21250,36049,32905,34425,24319,26085,20083,20837,22914,23615,38894,20219,22922,24525,35469,28641,31152,31074,23527,33905,29483,29105,24180,24565,25467,25754,29123,31896,20035,24316,20043,22492,22178,24745,28611,32013,33021,33075,33215,36786,35223,34468,24052,25226,25773,35207,26487,27874,27966,29750,30772,23110,32629,33453,39340,20467,24259,25309,25490,25943,26479,30403,29260,32972,32954,36649,37197,20493,22521,23186,26757,26995,29028,29437,36023,22770,36064,38506,36889,34687,31204,30695,33833,20271,21093,21338,25293,26575,27850,30333,31636,31893,33334,34180,36843,26333,28448,29190,32283,33707,39361,40614,20989,31665,30834,31672,32903,31560,27368,24161,32908,30033,30048,20843,37474,28300,30330,37271,39658,20240,32624,25244,31567,38309,40169,22138,22617,34532,38588,20276,21028,21322,21453,21467,24070,25644,26001,26495,27710,27726,29256,29359,29677,30036,32321,33324,34281,36009,31684,37318,29033,38930,39151,25405,26217,30058,30436,30928,34115,34542,21290,21329,21542,22915,24199,24444,24754,25161,25209,25259,26e3,27604,27852,30130,30382,30865,31192,32203,32631,32933,34987,35513,36027,36991,38750,39131,27147,31800,20633,23614,24494,26503,27608,29749,30473,32654,40763,26570,31255,21305,30091,39661,24422,33181,33777,32920,24380,24517,30050,31558,36924,26727,23019,23195,32016,30334,35628,20469,24426,27161,27703,28418,29922,31080,34920,35413,35961,24287,25551,30149,31186,33495,37672,37618,33948,34541,39981,21697,24428,25996,27996,28693,36007,36051,38971,25935,29942,19981,20184,22496,22827,23142,23500,20904,24067,24220,24598,25206,25975,26023,26222,28014,29238,31526,33104,33178,33433,35676,36e3,36070,36212,38428,38468,20398,25771,27494,33310,33889,34154,37096,23553,26963,39080,33914,34135,20239,21103,24489,24133,26381,31119,33145,35079,35206,28149,24343,25173,27832,20175,29289,39826,20998,21563,22132,22707,24996,25198,28954,22894,31881,31966,32027,38640,25991,32862,19993,20341,20853,22592,24163,24179,24330,26564,20006,34109,38281,38491,31859,38913,20731,22721,30294,30887,21029,30629,34065,31622,20559,22793,29255,31687,32232,36794,36820,36941,20415,21193,23081,24321,38829,20445,33303,37610,22275,25429,27497,29995,35036,36628,31298,21215,22675,24917,25098,26286,27597,31807,33769,20515,20472,21253,21574,22577,22857,23453,23792,23791,23849,24214,25265,25447,25918,26041,26379,27861,27873,28921,30770,32299,32990,33459,33804,34028,34562,35090,35370,35914,37030,37586,39165,40179,40300,20047,20129,20621,21078,22346,22952,24125,24536,24537,25151,26292,26395,26576,26834,20882,32033,32938,33192,35584,35980,36031,37502,38450,21536,38956,21271,20693,21340,22696,25778,26420,29287,30566,31302,37350,21187,27809,27526,22528,24140,22868,26412,32763,20961,30406,25705,30952,39764,40635,22475,22969,26151,26522,27598,21737,27097,24149,33180,26517,39850,26622,40018,26717,20134,20451,21448,25273,26411,27819,36804,20397,32365,40639,19975,24930,28288,28459,34067,21619,26410,39749,24051,31637,23724,23494,34588,28234,34001,31252,33032,22937,31885,27665,30496,21209,22818,28961,29279,30683,38695,40289,26891,23167,23064,20901,21517,21629,26126,30431,36855,37528,40180,23018,29277,28357,20813,26825,32191,32236,38754,40634,25720,27169,33538,22916,23391,27611,29467,30450,32178,32791,33945,20786,26408,40665,30446,26466,21247,39173,23588,25147,31870,36016,21839,24758,32011,38272,21249,20063,20918,22812,29242,32822,37326,24357,30690,21380,24441,32004,34220,35379,36493,38742,26611,34222,37971,24841,24840,27833,30290,35565,36664,21807,20305,20778,21191,21451,23461,24189,24736,24962,25558,26377,26586,28263,28044,29494,29495,30001,31056,35029,35480,36938,37009,37109,38596,34701,22805,20104,20313,19982,35465,36671,38928,20653,24188,22934,23481,24248,25562,25594,25793,26332,26954,27096,27915,28342,29076,29992,31407,32650,32768,33865,33993,35201,35617,36362,36965,38525,39178,24958,25233,27442,27779,28020,32716,32764,28096,32645,34746,35064,26469,33713,38972,38647,27931,32097,33853,37226,20081,21365,23888,27396,28651,34253,34349,35239,21033,21519,23653,26446,26792,29702,29827,30178,35023,35041,37324,38626,38520,24459,29575,31435,33870,25504,30053,21129,27969,28316,29705,30041,30827,31890,38534,31452,40845,20406,24942,26053,34396,20102,20142,20698,20001,20940,23534,26009,26753,28092,29471,30274,30637,31260,31975,33391,35538,36988,37327,38517,38936,21147,32209,20523,21400,26519,28107,29136,29747,33256,36650,38563,40023,40607,29792,22593,28057,32047,39006,20196,20278,20363,20919,21169,23994,24604,29618,31036,33491,37428,38583,38646,38666,40599,40802,26278,27508,21015,21155,28872,35010,24265,24651,24976,28451,29001,31806,32244,32879,34030,36899,37676,21570,39791,27347,28809,36034,36335,38706,21172,23105,24266,24324,26391,27004,27028,28010,28431,29282,29436,31725,32769,32894,34635,37070,20845,40595,31108,32907,37682,35542,20525,21644,35441,27498,36036,33031,24785,26528,40434,20121,20120,39952,35435,34241,34152,26880,28286,30871,33109,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,24332,19984,19989,20010,20017,20022,20028,20031,20034,20054,20056,20098,20101,35947,20106,33298,24333,20110,20126,20127,20128,20130,20144,20147,20150,20174,20173,20164,20166,20162,20183,20190,20205,20191,20215,20233,20314,20272,20315,20317,20311,20295,20342,20360,20367,20376,20347,20329,20336,20369,20335,20358,20374,20760,20436,20447,20430,20440,20443,20433,20442,20432,20452,20453,20506,20520,20500,20522,20517,20485,20252,20470,20513,20521,20524,20478,20463,20497,20486,20547,20551,26371,20565,20560,20552,20570,20566,20588,20600,20608,20634,20613,20660,20658,20681,20682,20659,20674,20694,20702,20709,20717,20707,20718,20729,20725,20745,20737,20738,20758,20757,20756,20762,20769,20794,20791,20796,20795,20799,20800,20818,20812,20820,20834,31480,20841,20842,20846,20864,20866,22232,20876,20873,20879,20881,20883,20885,20886,20900,20902,20898,20905,20906,20907,20915,20913,20914,20912,20917,20925,20933,20937,20955,20960,34389,20969,20973,20976,20981,20990,20996,21003,21012,21006,21031,21034,21038,21043,21049,21071,21060,21067,21068,21086,21076,21098,21108,21097,21107,21119,21117,21133,21140,21138,21105,21128,21137,36776,36775,21164,21165,21180,21173,21185,21197,21207,21214,21219,21222,39149,21216,21235,21237,21240,21241,21254,21256,30008,21261,21264,21263,21269,21274,21283,21295,21297,21299,21304,21312,21318,21317,19991,21321,21325,20950,21342,21353,21358,22808,21371,21367,21378,21398,21408,21414,21413,21422,21424,21430,21443,31762,38617,21471,26364,29166,21486,21480,21485,21498,21505,21565,21568,21548,21549,21564,21550,21558,21545,21533,21582,21647,21621,21646,21599,21617,21623,21616,21650,21627,21632,21622,21636,21648,21638,21703,21666,21688,21669,21676,21700,21704,21672,21675,21698,21668,21694,21692,21720,21733,21734,21775,21780,21757,21742,21741,21754,21730,21817,21824,21859,21836,21806,21852,21829,21846,21847,21816,21811,21853,21913,21888,21679,21898,21919,21883,21886,21912,21918,21934,21884,21891,21929,21895,21928,21978,21957,21983,21956,21980,21988,21972,22036,22007,22038,22014,22013,22043,22009,22094,22096,29151,22068,22070,22066,22072,22123,22116,22063,22124,22122,22150,22144,22154,22176,22164,22159,22181,22190,22198,22196,22210,22204,22209,22211,22208,22216,22222,22225,22227,22231,22254,22265,22272,22271,22276,22281,22280,22283,22285,22291,22296,22294,21959,22300,22310,22327,22328,22350,22331,22336,22351,22377,22464,22408,22369,22399,22409,22419,22432,22451,22436,22442,22448,22467,22470,22484,22482,22483,22538,22486,22499,22539,22553,22557,22642,22561,22626,22603,22640,27584,22610,22589,22649,22661,22713,22687,22699,22714,22750,22715,22712,22702,22725,22739,22737,22743,22745,22744,22757,22748,22756,22751,22767,22778,22777,22779,22780,22781,22786,22794,22800,22811,26790,22821,22828,22829,22834,22840,22846,31442,22869,22864,22862,22874,22872,22882,22880,22887,22892,22889,22904,22913,22941,20318,20395,22947,22962,22982,23016,23004,22925,23001,23002,23077,23071,23057,23068,23049,23066,23104,23148,23113,23093,23094,23138,23146,23194,23228,23230,23243,23234,23229,23267,23255,23270,23273,23254,23290,23291,23308,23307,23318,23346,23248,23338,23350,23358,23363,23365,23360,23377,23381,23386,23387,23397,23401,23408,23411,23413,23416,25992,23418,23424,23427,23462,23480,23491,23495,23497,23508,23504,23524,23526,23522,23518,23525,23531,23536,23542,23539,23557,23559,23560,23565,23571,23584,23586,23592,23608,23609,23617,23622,23630,23635,23632,23631,23409,23660,23662,20066,23670,23673,23692,23697,23700,22939,23723,23739,23734,23740,23735,23749,23742,23751,23769,23785,23805,23802,23789,23948,23786,23819,23829,23831,23900,23839,23835,23825,23828,23842,23834,23833,23832,23884,23890,23886,23883,23916,23923,23926,23943,23940,23938,23970,23965,23980,23982,23997,23952,23991,23996,24009,24013,24019,24018,24022,24027,24043,24050,24053,24075,24090,24089,24081,24091,24118,24119,24132,24131,24128,24142,24151,24148,24159,24162,24164,24135,24181,24182,24186,40636,24191,24224,24257,24258,24264,24272,24271,24278,24291,24285,24282,24283,24290,24289,24296,24297,24300,24305,24307,24304,24308,24312,24318,24323,24329,24413,24412,24331,24337,24342,24361,24365,24376,24385,24392,24396,24398,24367,24401,24406,24407,24409,24417,24429,24435,24439,24451,24450,24447,24458,24456,24465,24455,24478,24473,24472,24480,24488,24493,24508,24534,24571,24548,24568,24561,24541,24755,24575,24609,24672,24601,24592,24617,24590,24625,24603,24597,24619,24614,24591,24634,24666,24641,24682,24695,24671,24650,24646,24653,24675,24643,24676,24642,24684,24683,24665,24705,24717,24807,24707,24730,24708,24731,24726,24727,24722,24743,24715,24801,24760,24800,24787,24756,24560,24765,24774,24757,24792,24909,24853,24838,24822,24823,24832,24820,24826,24835,24865,24827,24817,24845,24846,24903,24894,24872,24871,24906,24895,24892,24876,24884,24893,24898,24900,24947,24951,24920,24921,24922,24939,24948,24943,24933,24945,24927,24925,24915,24949,24985,24982,24967,25004,24980,24986,24970,24977,25003,25006,25036,25034,25033,25079,25032,25027,25030,25018,25035,32633,25037,25062,25059,25078,25082,25076,25087,25085,25084,25086,25088,25096,25097,25101,25100,25108,25115,25118,25121,25130,25134,25136,25138,25139,25153,25166,25182,25187,25179,25184,25192,25212,25218,25225,25214,25234,25235,25238,25300,25219,25236,25303,25297,25275,25295,25343,25286,25812,25288,25308,25292,25290,25282,25287,25243,25289,25356,25326,25329,25383,25346,25352,25327,25333,25424,25406,25421,25628,25423,25494,25486,25472,25515,25462,25507,25487,25481,25503,25525,25451,25449,25534,25577,25536,25542,25571,25545,25554,25590,25540,25622,25652,25606,25619,25638,25654,25885,25623,25640,25615,25703,25711,25718,25678,25898,25749,25747,25765,25769,25736,25788,25818,25810,25797,25799,25787,25816,25794,25841,25831,33289,25824,25825,25260,25827,25839,25900,25846,25844,25842,25850,25856,25853,25880,25884,25861,25892,25891,25899,25908,25909,25911,25910,25912,30027,25928,25942,25941,25933,25944,25950,25949,25970,25976,25986,25987,35722,26011,26015,26027,26039,26051,26054,26049,26052,26060,26066,26075,26073,26080,26081,26097,26482,26122,26115,26107,26483,26165,26166,26164,26140,26191,26180,26185,26177,26206,26205,26212,26215,26216,26207,26210,26224,26243,26248,26254,26249,26244,26264,26269,26305,26297,26313,26302,26300,26308,26296,26326,26330,26336,26175,26342,26345,26352,26357,26359,26383,26390,26398,26406,26407,38712,26414,26431,26422,26433,26424,26423,26438,26462,26464,26457,26467,26468,26505,26480,26537,26492,26474,26508,26507,26534,26529,26501,26551,26607,26548,26604,26547,26601,26552,26596,26590,26589,26594,26606,26553,26574,26566,26599,27292,26654,26694,26665,26688,26701,26674,26702,26803,26667,26713,26723,26743,26751,26783,26767,26797,26772,26781,26779,26755,27310,26809,26740,26805,26784,26810,26895,26765,26750,26881,26826,26888,26840,26914,26918,26849,26892,26829,26836,26855,26837,26934,26898,26884,26839,26851,26917,26873,26848,26863,26920,26922,26906,26915,26913,26822,27001,26999,26972,27e3,26987,26964,27006,26990,26937,26996,26941,26969,26928,26977,26974,26973,27009,26986,27058,27054,27088,27071,27073,27091,27070,27086,23528,27082,27101,27067,27075,27047,27182,27025,27040,27036,27029,27060,27102,27112,27138,27163,27135,27402,27129,27122,27111,27141,27057,27166,27117,27156,27115,27146,27154,27329,27171,27155,27204,27148,27250,27190,27256,27207,27234,27225,27238,27208,27192,27170,27280,27277,27296,27268,27298,27299,27287,34327,27323,27331,27330,27320,27315,27308,27358,27345,27359,27306,27354,27370,27387,27397,34326,27386,27410,27414,39729,27423,27448,27447,30428,27449,39150,27463,27459,27465,27472,27481,27476,27483,27487,27489,27512,27513,27519,27520,27524,27523,27533,27544,27541,27550,27556,27562,27563,27567,27570,27569,27571,27575,27580,27590,27595,27603,27615,27628,27627,27635,27631,40638,27656,27667,27668,27675,27684,27683,27742,27733,27746,27754,27778,27789,27802,27777,27803,27774,27752,27763,27794,27792,27844,27889,27859,27837,27863,27845,27869,27822,27825,27838,27834,27867,27887,27865,27882,27935,34893,27958,27947,27965,27960,27929,27957,27955,27922,27916,28003,28051,28004,27994,28025,27993,28046,28053,28644,28037,28153,28181,28170,28085,28103,28134,28088,28102,28140,28126,28108,28136,28114,28101,28154,28121,28132,28117,28138,28142,28205,28270,28206,28185,28274,28255,28222,28195,28267,28203,28278,28237,28191,28227,28218,28238,28196,28415,28189,28216,28290,28330,28312,28361,28343,28371,28349,28335,28356,28338,28372,28373,28303,28325,28354,28319,28481,28433,28748,28396,28408,28414,28479,28402,28465,28399,28466,28364,28478,28435,28407,28550,28538,28536,28545,28544,28527,28507,28659,28525,28546,28540,28504,28558,28561,28610,28518,28595,28579,28577,28580,28601,28614,28586,28639,28629,28652,28628,28632,28657,28654,28635,28681,28683,28666,28689,28673,28687,28670,28699,28698,28532,28701,28696,28703,28720,28734,28722,28753,28771,28825,28818,28847,28913,28844,28856,28851,28846,28895,28875,28893,28889,28937,28925,28956,28953,29029,29013,29064,29030,29026,29004,29014,29036,29071,29179,29060,29077,29096,29100,29143,29113,29118,29138,29129,29140,29134,29152,29164,29159,29173,29180,29177,29183,29197,29200,29211,29224,29229,29228,29232,29234,29243,29244,29247,29248,29254,29259,29272,29300,29310,29314,29313,29319,29330,29334,29346,29351,29369,29362,29379,29382,29380,29390,29394,29410,29408,29409,29433,29431,20495,29463,29450,29468,29462,29469,29492,29487,29481,29477,29502,29518,29519,40664,29527,29546,29544,29552,29560,29557,29563,29562,29640,29619,29646,29627,29632,29669,29678,29662,29858,29701,29807,29733,29688,29746,29754,29781,29759,29791,29785,29761,29788,29801,29808,29795,29802,29814,29822,29835,29854,29863,29898,29903,29908,29681,29920,29923,29927,29929,29934,29938,29936,29937,29944,29943,29956,29955,29957,29964,29966,29965,29973,29971,29982,29990,29996,30012,30020,30029,30026,30025,30043,30022,30042,30057,30052,30055,30059,30061,30072,30070,30086,30087,30068,30090,30089,30082,30100,30106,30109,30117,30115,30146,30131,30147,30133,30141,30136,30140,30129,30157,30154,30162,30169,30179,30174,30206,30207,30204,30209,30192,30202,30194,30195,30219,30221,30217,30239,30247,30240,30241,30242,30244,30260,30256,30267,30279,30280,30278,30300,30296,30305,30306,30312,30313,30314,30311,30316,30320,30322,30326,30328,30332,30336,30339,30344,30347,30350,30358,30355,30361,30362,30384,30388,30392,30393,30394,30402,30413,30422,30418,30430,30433,30437,30439,30442,34351,30459,30472,30471,30468,30505,30500,30494,30501,30502,30491,30519,30520,30535,30554,30568,30571,30555,30565,30591,30590,30585,30606,30603,30609,30624,30622,30640,30646,30649,30655,30652,30653,30651,30663,30669,30679,30682,30684,30691,30702,30716,30732,30738,31014,30752,31018,30789,30862,30836,30854,30844,30874,30860,30883,30901,30890,30895,30929,30918,30923,30932,30910,30908,30917,30922,30956,30951,30938,30973,30964,30983,30994,30993,31001,31020,31019,31040,31072,31063,31071,31066,31061,31059,31098,31103,31114,31133,31143,40779,31146,31150,31155,31161,31162,31177,31189,31207,31212,31201,31203,31240,31245,31256,31257,31264,31263,31104,31281,31291,31294,31287,31299,31319,31305,31329,31330,31337,40861,31344,31353,31357,31368,31383,31381,31384,31382,31401,31432,31408,31414,31429,31428,31423,36995,31431,31434,31437,31439,31445,31443,31449,31450,31453,31457,31458,31462,31469,31472,31490,31503,31498,31494,31539,31512,31513,31518,31541,31528,31542,31568,31610,31492,31565,31499,31564,31557,31605,31589,31604,31591,31600,31601,31596,31598,31645,31640,31647,31629,31644,31642,31627,31634,31631,31581,31641,31691,31681,31692,31695,31668,31686,31709,31721,31761,31764,31718,31717,31840,31744,31751,31763,31731,31735,31767,31757,31734,31779,31783,31786,31775,31799,31787,31805,31820,31811,31828,31823,31808,31824,31832,31839,31844,31830,31845,31852,31861,31875,31888,31908,31917,31906,31915,31905,31912,31923,31922,31921,31918,31929,31933,31936,31941,31938,31960,31954,31964,31970,39739,31983,31986,31988,31990,31994,32006,32002,32028,32021,32010,32069,32075,32046,32050,32063,32053,32070,32115,32086,32078,32114,32104,32110,32079,32099,32147,32137,32091,32143,32125,32155,32186,32174,32163,32181,32199,32189,32171,32317,32162,32175,32220,32184,32159,32176,32216,32221,32228,32222,32251,32242,32225,32261,32266,32291,32289,32274,32305,32287,32265,32267,32290,32326,32358,32315,32309,32313,32323,32311,32306,32314,32359,32349,32342,32350,32345,32346,32377,32362,32361,32380,32379,32387,32213,32381,36782,32383,32392,32393,32396,32402,32400,32403,32404,32406,32398,32411,32412,32568,32570,32581,32588,32589,32590,32592,32593,32597,32596,32600,32607,32608,32616,32617,32615,32632,32642,32646,32643,32648,32647,32652,32660,32670,32669,32666,32675,32687,32690,32697,32686,32694,32696,35697,32709,32710,32714,32725,32724,32737,32742,32745,32755,32761,39132,32774,32772,32779,32786,32792,32793,32796,32801,32808,32831,32827,32842,32838,32850,32856,32858,32863,32866,32872,32883,32882,32880,32886,32889,32893,32895,32900,32902,32901,32923,32915,32922,32941,20880,32940,32987,32997,32985,32989,32964,32986,32982,33033,33007,33009,33051,33065,33059,33071,33099,38539,33094,33086,33107,33105,33020,33137,33134,33125,33126,33140,33155,33160,33162,33152,33154,33184,33173,33188,33187,33119,33171,33193,33200,33205,33214,33208,33213,33216,33218,33210,33225,33229,33233,33241,33240,33224,33242,33247,33248,33255,33274,33275,33278,33281,33282,33285,33287,33290,33293,33296,33302,33321,33323,33336,33331,33344,33369,33368,33373,33370,33375,33380,33378,33384,33386,33387,33326,33393,33399,33400,33406,33421,33426,33451,33439,33467,33452,33505,33507,33503,33490,33524,33523,33530,33683,33539,33531,33529,33502,33542,33500,33545,33497,33589,33588,33558,33586,33585,33600,33593,33616,33605,33583,33579,33559,33560,33669,33690,33706,33695,33698,33686,33571,33678,33671,33674,33660,33717,33651,33653,33696,33673,33704,33780,33811,33771,33742,33789,33795,33752,33803,33729,33783,33799,33760,33778,33805,33826,33824,33725,33848,34054,33787,33901,33834,33852,34138,33924,33911,33899,33965,33902,33922,33897,33862,33836,33903,33913,33845,33994,33890,33977,33983,33951,34009,33997,33979,34010,34e3,33985,33990,34006,33953,34081,34047,34036,34071,34072,34092,34079,34069,34068,34044,34112,34147,34136,34120,34113,34306,34123,34133,34176,34212,34184,34193,34186,34216,34157,34196,34203,34282,34183,34204,34167,34174,34192,34249,34234,34255,34233,34256,34261,34269,34277,34268,34297,34314,34323,34315,34302,34298,34310,34338,34330,34352,34367,34381,20053,34388,34399,34407,34417,34451,34467,34473,34474,34443,34444,34486,34479,34500,34502,34480,34505,34851,34475,34516,34526,34537,34540,34527,34523,34543,34578,34566,34568,34560,34563,34555,34577,34569,34573,34553,34570,34612,34623,34615,34619,34597,34601,34586,34656,34655,34680,34636,34638,34676,34647,34664,34670,34649,34643,34659,34666,34821,34722,34719,34690,34735,34763,34749,34752,34768,38614,34731,34756,34739,34759,34758,34747,34799,34802,34784,34831,34829,34814,34806,34807,34830,34770,34833,34838,34837,34850,34849,34865,34870,34873,34855,34875,34884,34882,34898,34905,34910,34914,34923,34945,34942,34974,34933,34941,34997,34930,34946,34967,34962,34990,34969,34978,34957,34980,34992,35007,34993,35011,35012,35028,35032,35033,35037,35065,35074,35068,35060,35048,35058,35076,35084,35082,35091,35139,35102,35109,35114,35115,35137,35140,35131,35126,35128,35148,35101,35168,35166,35174,35172,35181,35178,35183,35188,35191,35198,35203,35208,35210,35219,35224,35233,35241,35238,35244,35247,35250,35258,35261,35263,35264,35290,35292,35293,35303,35316,35320,35331,35350,35344,35340,35355,35357,35365,35382,35393,35419,35410,35398,35400,35452,35437,35436,35426,35461,35458,35460,35496,35489,35473,35493,35494,35482,35491,35524,35533,35522,35546,35563,35571,35559,35556,35569,35604,35552,35554,35575,35550,35547,35596,35591,35610,35553,35606,35600,35607,35616,35635,38827,35622,35627,35646,35624,35649,35660,35663,35662,35657,35670,35675,35674,35691,35679,35692,35695,35700,35709,35712,35724,35726,35730,35731,35734,35737,35738,35898,35905,35903,35912,35916,35918,35920,35925,35938,35948,35960,35962,35970,35977,35973,35978,35981,35982,35988,35964,35992,25117,36013,36010,36029,36018,36019,36014,36022,36040,36033,36068,36067,36058,36093,36090,36091,36100,36101,36106,36103,36111,36109,36112,40782,36115,36045,36116,36118,36199,36205,36209,36211,36225,36249,36290,36286,36282,36303,36314,36310,36300,36315,36299,36330,36331,36319,36323,36348,36360,36361,36351,36381,36382,36368,36383,36418,36405,36400,36404,36426,36423,36425,36428,36432,36424,36441,36452,36448,36394,36451,36437,36470,36466,36476,36481,36487,36485,36484,36491,36490,36499,36497,36500,36505,36522,36513,36524,36528,36550,36529,36542,36549,36552,36555,36571,36579,36604,36603,36587,36606,36618,36613,36629,36626,36633,36627,36636,36639,36635,36620,36646,36659,36667,36665,36677,36674,36670,36684,36681,36678,36686,36695,36700,36706,36707,36708,36764,36767,36771,36781,36783,36791,36826,36837,36834,36842,36847,36999,36852,36869,36857,36858,36881,36885,36897,36877,36894,36886,36875,36903,36918,36917,36921,36856,36943,36944,36945,36946,36878,36937,36926,36950,36952,36958,36968,36975,36982,38568,36978,36994,36989,36993,36992,37002,37001,37007,37032,37039,37041,37045,37090,37092,25160,37083,37122,37138,37145,37170,37168,37194,37206,37208,37219,37221,37225,37235,37234,37259,37257,37250,37282,37291,37295,37290,37301,37300,37306,37312,37313,37321,37323,37328,37334,37343,37345,37339,37372,37365,37366,37406,37375,37396,37420,37397,37393,37470,37463,37445,37449,37476,37448,37525,37439,37451,37456,37532,37526,37523,37531,37466,37583,37561,37559,37609,37647,37626,37700,37678,37657,37666,37658,37667,37690,37685,37691,37724,37728,37756,37742,37718,37808,37804,37805,37780,37817,37846,37847,37864,37861,37848,37827,37853,37840,37832,37860,37914,37908,37907,37891,37895,37904,37942,37931,37941,37921,37946,37953,37970,37956,37979,37984,37986,37982,37994,37417,38e3,38005,38007,38013,37978,38012,38014,38017,38015,38274,38279,38282,38292,38294,38296,38297,38304,38312,38311,38317,38332,38331,38329,38334,38346,28662,38339,38349,38348,38357,38356,38358,38364,38369,38373,38370,38433,38440,38446,38447,38466,38476,38479,38475,38519,38492,38494,38493,38495,38502,38514,38508,38541,38552,38549,38551,38570,38567,38577,38578,38576,38580,38582,38584,38585,38606,38603,38601,38605,35149,38620,38669,38613,38649,38660,38662,38664,38675,38670,38673,38671,38678,38681,38692,38698,38704,38713,38717,38718,38724,38726,38728,38722,38729,38748,38752,38756,38758,38760,21202,38763,38769,38777,38789,38780,38785,38778,38790,38795,38799,38800,38812,38824,38822,38819,38835,38836,38851,38854,38856,38859,38876,38893,40783,38898,31455,38902,38901,38927,38924,38968,38948,38945,38967,38973,38982,38991,38987,39019,39023,39024,39025,39028,39027,39082,39087,39089,39094,39108,39107,39110,39145,39147,39171,39177,39186,39188,39192,39201,39197,39198,39204,39200,39212,39214,39229,39230,39234,39241,39237,39248,39243,39249,39250,39244,39253,39319,39320,39333,39341,39342,39356,39391,39387,39389,39384,39377,39405,39406,39409,39410,39419,39416,39425,39439,39429,39394,39449,39467,39479,39493,39490,39488,39491,39486,39509,39501,39515,39511,39519,39522,39525,39524,39529,39531,39530,39597,39600,39612,39616,39631,39633,39635,39636,39646,39647,39650,39651,39654,39663,39659,39662,39668,39665,39671,39675,39686,39704,39706,39711,39714,39715,39717,39719,39720,39721,39722,39726,39727,39730,39748,39747,39759,39757,39758,39761,39768,39796,39827,39811,39825,39830,39831,39839,39840,39848,39860,39872,39882,39865,39878,39887,39889,39890,39907,39906,39908,39892,39905,39994,39922,39921,39920,39957,39956,39945,39955,39948,39942,39944,39954,39946,39940,39982,39963,39973,39972,39969,39984,40007,39986,40006,39998,40026,40032,40039,40054,40056,40167,40172,40176,40201,40200,40171,40195,40198,40234,40230,40367,40227,40223,40260,40213,40210,40257,40255,40254,40262,40264,40285,40286,40292,40273,40272,40281,40306,40329,40327,40363,40303,40314,40346,40356,40361,40370,40388,40385,40379,40376,40378,40390,40399,40386,40409,40403,40440,40422,40429,40431,40445,40474,40475,40478,40565,40569,40573,40577,40584,40587,40588,40594,40597,40593,40605,40613,40617,40632,40618,40621,38753,40652,40654,40655,40656,40660,40668,40670,40669,40672,40677,40680,40687,40692,40694,40695,40697,40699,40700,40701,40711,40712,30391,40725,40737,40748,40766,40778,40786,40788,40803,40799,40800,40801,40806,40807,40812,40810,40823,40818,40822,40853,40860,40864,22575,27079,36953,29796,20956,29081,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,32394,35100,37704,37512,34012,20425,28859,26161,26824,37625,26363,24389,20008,20193,20220,20224,20227,20281,20310,20370,20362,20378,20372,20429,20544,20514,20479,20510,20550,20592,20546,20628,20724,20696,20810,20836,20893,20926,20972,21013,21148,21158,21184,21211,21248,21255,21284,21362,21395,21426,21469,64014,21660,21642,21673,21759,21894,22361,22373,22444,22472,22471,64015,64016,22686,22706,22795,22867,22875,22877,22883,22948,22970,23382,23488,29999,23512,23532,23582,23718,23738,23797,23847,23891,64017,23874,23917,23992,23993,24016,24353,24372,24423,24503,24542,24669,24709,24714,24798,24789,24864,24818,24849,24887,24880,24984,25107,25254,25589,25696,25757,25806,25934,26112,26133,26171,26121,26158,26142,26148,26213,26199,26201,64018,26227,26265,26272,26290,26303,26362,26382,63785,26470,26555,26706,26560,26625,26692,26831,64019,26984,64020,27032,27106,27184,27243,27206,27251,27262,27362,27364,27606,27711,27740,27782,27759,27866,27908,28039,28015,28054,28076,28111,28152,28146,28156,28217,28252,28199,28220,28351,28552,28597,28661,28677,28679,28712,28805,28843,28943,28932,29020,28998,28999,64021,29121,29182,29361,29374,29476,64022,29559,29629,29641,29654,29667,29650,29703,29685,29734,29738,29737,29742,29794,29833,29855,29953,30063,30338,30364,30366,30363,30374,64023,30534,21167,30753,30798,30820,30842,31024,64024,64025,64026,31124,64027,31131,31441,31463,64028,31467,31646,64029,32072,32092,32183,32160,32214,32338,32583,32673,64030,33537,33634,33663,33735,33782,33864,33972,34131,34137,34155,64031,34224,64032,64033,34823,35061,35346,35383,35449,35495,35518,35551,64034,35574,35667,35711,36080,36084,36114,36214,64035,36559,64036,64037,36967,37086,64038,37141,37159,37338,37335,37342,37357,37358,37348,37349,37382,37392,37386,37434,37440,37436,37454,37465,37457,37433,37479,37543,37495,37496,37607,37591,37593,37584,64039,37589,37600,37587,37669,37665,37627,64040,37662,37631,37661,37634,37744,37719,37796,37830,37854,37880,37937,37957,37960,38290,63964,64041,38557,38575,38707,38715,38723,38733,38735,38737,38741,38999,39013,64042,64043,39207,64044,39326,39502,39641,39644,39797,39794,39823,39857,39867,39936,40304,40299,64045,40473,40657,null,null,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,65506,65508,65287,65282,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,65506,65508,65287,65282,12849,8470,8481,8757,32394,35100,37704,37512,34012,20425,28859,26161,26824,37625,26363,24389,20008,20193,20220,20224,20227,20281,20310,20370,20362,20378,20372,20429,20544,20514,20479,20510,20550,20592,20546,20628,20724,20696,20810,20836,20893,20926,20972,21013,21148,21158,21184,21211,21248,21255,21284,21362,21395,21426,21469,64014,21660,21642,21673,21759,21894,22361,22373,22444,22472,22471,64015,64016,22686,22706,22795,22867,22875,22877,22883,22948,22970,23382,23488,29999,23512,23532,23582,23718,23738,23797,23847,23891,64017,23874,23917,23992,23993,24016,24353,24372,24423,24503,24542,24669,24709,24714,24798,24789,24864,24818,24849,24887,24880,24984,25107,25254,25589,25696,25757,25806,25934,26112,26133,26171,26121,26158,26142,26148,26213,26199,26201,64018,26227,26265,26272,26290,26303,26362,26382,63785,26470,26555,26706,26560,26625,26692,26831,64019,26984,64020,27032,27106,27184,27243,27206,27251,27262,27362,27364,27606,27711,27740,27782,27759,27866,27908,28039,28015,28054,28076,28111,28152,28146,28156,28217,28252,28199,28220,28351,28552,28597,28661,28677,28679,28712,28805,28843,28943,28932,29020,28998,28999,64021,29121,29182,29361,29374,29476,64022,29559,29629,29641,29654,29667,29650,29703,29685,29734,29738,29737,29742,29794,29833,29855,29953,30063,30338,30364,30366,30363,30374,64023,30534,21167,30753,30798,30820,30842,31024,64024,64025,64026,31124,64027,31131,31441,31463,64028,31467,31646,64029,32072,32092,32183,32160,32214,32338,32583,32673,64030,33537,33634,33663,33735,33782,33864,33972,34131,34137,34155,64031,34224,64032,64033,34823,35061,35346,35383,35449,35495,35518,35551,64034,35574,35667,35711,36080,36084,36114,36214,64035,36559,64036,64037,36967,37086,64038,37141,37159,37338,37335,37342,37357,37358,37348,37349,37382,37392,37386,37434,37440,37436,37454,37465,37457,37433,37479,37543,37495,37496,37607,37591,37593,37584,64039,37589,37600,37587,37669,37665,37627,64040,37662,37631,37661,37634,37744,37719,37796,37830,37854,37880,37937,37957,37960,38290,63964,64041,38557,38575,38707,38715,38723,38733,38735,38737,38741,38999,39013,64042,64043,39207,64044,39326,39502,39641,39644,39797,39794,39823,39857,39867,39936,40304,40299,64045,40473,40657,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null], jis0212:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,728,711,184,729,733,175,731,730,65374,900,901,null,null,null,null,null,null,null,null,161,166,191,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,186,170,169,174,8482,164,8470,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,902,904,905,906,938,null,908,null,910,939,null,911,null,null,null,null,940,941,942,943,970,912,972,962,973,971,944,974,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1038,1039,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1118,1119,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,198,272,null,294,null,306,null,321,319,null,330,216,338,null,358,222,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,230,273,240,295,305,307,312,322,320,329,331,248,339,223,359,254,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,193,192,196,194,258,461,256,260,197,195,262,264,268,199,266,270,201,200,203,202,282,278,274,280,null,284,286,290,288,292,205,204,207,206,463,304,298,302,296,308,310,313,317,315,323,327,325,209,211,210,214,212,465,336,332,213,340,344,342,346,348,352,350,356,354,218,217,220,219,364,467,368,362,370,366,360,471,475,473,469,372,221,376,374,377,381,379,null,null,null,null,null,null,null,225,224,228,226,259,462,257,261,229,227,263,265,269,231,267,271,233,232,235,234,283,279,275,281,501,285,287,null,289,293,237,236,239,238,464,null,299,303,297,309,311,314,318,316,324,328,326,241,243,242,246,244,466,337,333,245,341,345,343,347,349,353,351,357,355,250,249,252,251,365,468,369,363,371,367,361,472,476,474,470,373,253,255,375,378,382,380,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,19970,19972,19973,19980,19986,19999,20003,20004,20008,20011,20014,20015,20016,20021,20032,20033,20036,20039,20049,20058,20060,20067,20072,20073,20084,20085,20089,20095,20109,20118,20119,20125,20143,20153,20163,20176,20186,20187,20192,20193,20194,20200,20207,20209,20211,20213,20221,20222,20223,20224,20226,20227,20232,20235,20236,20242,20245,20246,20247,20249,20270,20273,20320,20275,20277,20279,20281,20283,20286,20288,20290,20296,20297,20299,20300,20306,20308,20310,20312,20319,20323,20330,20332,20334,20337,20343,20344,20345,20346,20349,20350,20353,20354,20356,20357,20361,20362,20364,20366,20368,20370,20371,20372,20375,20377,20378,20382,20383,20402,20407,20409,20411,20412,20413,20414,20416,20417,20421,20422,20424,20425,20427,20428,20429,20431,20434,20444,20448,20450,20464,20466,20476,20477,20479,20480,20481,20484,20487,20490,20492,20494,20496,20499,20503,20504,20507,20508,20509,20510,20514,20519,20526,20528,20530,20531,20533,20544,20545,20546,20549,20550,20554,20556,20558,20561,20562,20563,20567,20569,20575,20576,20578,20579,20582,20583,20586,20589,20592,20593,20539,20609,20611,20612,20614,20618,20622,20623,20624,20626,20627,20628,20630,20635,20636,20638,20639,20640,20641,20642,20650,20655,20656,20665,20666,20669,20672,20675,20676,20679,20684,20686,20688,20691,20692,20696,20700,20701,20703,20706,20708,20710,20712,20713,20719,20721,20726,20730,20734,20739,20742,20743,20744,20747,20748,20749,20750,20722,20752,20759,20761,20763,20764,20765,20766,20771,20775,20776,20780,20781,20783,20785,20787,20788,20789,20792,20793,20802,20810,20815,20819,20821,20823,20824,20831,20836,20838,20862,20867,20868,20875,20878,20888,20893,20897,20899,20909,20920,20922,20924,20926,20927,20930,20936,20943,20945,20946,20947,20949,20952,20958,20962,20965,20974,20978,20979,20980,20983,20993,20994,20997,21010,21011,21013,21014,21016,21026,21032,21041,21042,21045,21052,21061,21065,21077,21079,21080,21082,21084,21087,21088,21089,21094,21102,21111,21112,21113,21120,21122,21125,21130,21132,21139,21141,21142,21143,21144,21146,21148,21156,21157,21158,21159,21167,21168,21174,21175,21176,21178,21179,21181,21184,21188,21190,21192,21196,21199,21201,21204,21206,21211,21212,21217,21221,21224,21225,21226,21228,21232,21233,21236,21238,21239,21248,21251,21258,21259,21260,21265,21267,21272,21275,21276,21278,21279,21285,21287,21288,21289,21291,21292,21293,21296,21298,21301,21308,21309,21310,21314,21324,21323,21337,21339,21345,21347,21349,21356,21357,21362,21369,21374,21379,21383,21384,21390,21395,21396,21401,21405,21409,21412,21418,21419,21423,21426,21428,21429,21431,21432,21434,21437,21440,21445,21455,21458,21459,21461,21466,21469,21470,21472,21478,21479,21493,21506,21523,21530,21537,21543,21544,21546,21551,21553,21556,21557,21571,21572,21575,21581,21583,21598,21602,21604,21606,21607,21609,21611,21613,21614,21620,21631,21633,21635,21637,21640,21641,21645,21649,21653,21654,21660,21663,21665,21670,21671,21673,21674,21677,21678,21681,21687,21689,21690,21691,21695,21702,21706,21709,21710,21728,21738,21740,21743,21750,21756,21758,21759,21760,21761,21765,21768,21769,21772,21773,21774,21781,21802,21803,21810,21813,21814,21819,21820,21821,21825,21831,21833,21834,21837,21840,21841,21848,21850,21851,21854,21856,21857,21860,21862,21887,21889,21890,21894,21896,21902,21903,21905,21906,21907,21908,21911,21923,21924,21933,21938,21951,21953,21955,21958,21961,21963,21964,21966,21969,21970,21971,21975,21976,21979,21982,21986,21993,22006,22015,22021,22024,22026,22029,22030,22031,22032,22033,22034,22041,22060,22064,22067,22069,22071,22073,22075,22076,22077,22079,22080,22081,22083,22084,22086,22089,22091,22093,22095,22100,22110,22112,22113,22114,22115,22118,22121,22125,22127,22129,22130,22133,22148,22149,22152,22155,22156,22165,22169,22170,22173,22174,22175,22182,22183,22184,22185,22187,22188,22189,22193,22195,22199,22206,22213,22217,22218,22219,22223,22224,22220,22221,22233,22236,22237,22239,22241,22244,22245,22246,22247,22248,22257,22251,22253,22262,22263,22273,22274,22279,22282,22284,22289,22293,22298,22299,22301,22304,22306,22307,22308,22309,22313,22314,22316,22318,22319,22323,22324,22333,22334,22335,22341,22342,22348,22349,22354,22370,22373,22375,22376,22379,22381,22382,22383,22384,22385,22387,22388,22389,22391,22393,22394,22395,22396,22398,22401,22403,22412,22420,22423,22425,22426,22428,22429,22430,22431,22433,22421,22439,22440,22441,22444,22456,22461,22471,22472,22476,22479,22485,22493,22494,22500,22502,22503,22505,22509,22512,22517,22518,22520,22525,22526,22527,22531,22532,22536,22537,22497,22540,22541,22555,22558,22559,22560,22566,22567,22573,22578,22585,22591,22601,22604,22605,22607,22608,22613,22623,22625,22628,22631,22632,22648,22652,22655,22656,22657,22663,22664,22665,22666,22668,22669,22671,22672,22676,22678,22685,22688,22689,22690,22694,22697,22705,22706,22724,22716,22722,22728,22733,22734,22736,22738,22740,22742,22746,22749,22753,22754,22761,22771,22789,22790,22795,22796,22802,22803,22804,34369,22813,22817,22819,22820,22824,22831,22832,22835,22837,22838,22847,22851,22854,22866,22867,22873,22875,22877,22878,22879,22881,22883,22891,22893,22895,22898,22901,22902,22905,22907,22908,22923,22924,22926,22930,22933,22935,22943,22948,22951,22957,22958,22959,22960,22963,22967,22970,22972,22977,22979,22980,22984,22986,22989,22994,23005,23006,23007,23011,23012,23015,23022,23023,23025,23026,23028,23031,23040,23044,23052,23053,23054,23058,23059,23070,23075,23076,23079,23080,23082,23085,23088,23108,23109,23111,23112,23116,23120,23125,23134,23139,23141,23143,23149,23159,23162,23163,23166,23179,23184,23187,23190,23193,23196,23198,23199,23200,23202,23207,23212,23217,23218,23219,23221,23224,23226,23227,23231,23236,23238,23240,23247,23258,23260,23264,23269,23274,23278,23285,23286,23293,23296,23297,23304,23319,23348,23321,23323,23325,23329,23333,23341,23352,23361,23371,23372,23378,23382,23390,23400,23406,23407,23420,23421,23422,23423,23425,23428,23430,23434,23438,23440,23441,23443,23444,23446,23464,23465,23468,23469,23471,23473,23474,23479,23482,23484,23488,23489,23501,23503,23510,23511,23512,23513,23514,23520,23535,23537,23540,23549,23564,23575,23582,23583,23587,23590,23593,23595,23596,23598,23600,23602,23605,23606,23641,23642,23644,23650,23651,23655,23656,23657,23661,23664,23668,23669,23674,23675,23676,23677,23687,23688,23690,23695,23698,23709,23711,23712,23714,23715,23718,23722,23730,23732,23733,23738,23753,23755,23762,23773,23767,23790,23793,23794,23796,23809,23814,23821,23826,23851,23843,23844,23846,23847,23857,23860,23865,23869,23871,23874,23875,23878,23880,23893,23889,23897,23882,23903,23904,23905,23906,23908,23914,23917,23920,23929,23930,23934,23935,23937,23939,23944,23946,23954,23955,23956,23957,23961,23963,23967,23968,23975,23979,23984,23988,23992,23993,24003,24007,24011,24016,24014,24024,24025,24032,24036,24041,24056,24057,24064,24071,24077,24082,24084,24085,24088,24095,24096,24110,24104,24114,24117,24126,24139,24144,24137,24145,24150,24152,24155,24156,24158,24168,24170,24171,24172,24173,24174,24176,24192,24203,24206,24226,24228,24229,24232,24234,24236,24241,24243,24253,24254,24255,24262,24268,24267,24270,24273,24274,24276,24277,24284,24286,24293,24299,24322,24326,24327,24328,24334,24345,24348,24349,24353,24354,24355,24356,24360,24363,24364,24366,24368,24372,24374,24379,24381,24383,24384,24388,24389,24391,24397,24400,24404,24408,24411,24416,24419,24420,24423,24431,24434,24436,24437,24440,24442,24445,24446,24457,24461,24463,24470,24476,24477,24482,24487,24491,24484,24492,24495,24496,24497,24504,24516,24519,24520,24521,24523,24528,24529,24530,24531,24532,24542,24545,24546,24552,24553,24554,24556,24557,24558,24559,24562,24563,24566,24570,24572,24583,24586,24589,24595,24596,24599,24600,24602,24607,24612,24621,24627,24629,24640,24647,24648,24649,24652,24657,24660,24662,24663,24669,24673,24679,24689,24702,24703,24706,24710,24712,24714,24718,24721,24723,24725,24728,24733,24734,24738,24740,24741,24744,24752,24753,24759,24763,24766,24770,24772,24776,24777,24778,24779,24782,24783,24788,24789,24793,24795,24797,24798,24802,24805,24818,24821,24824,24828,24829,24834,24839,24842,24844,24848,24849,24850,24851,24852,24854,24855,24857,24860,24862,24866,24874,24875,24880,24881,24885,24886,24887,24889,24897,24901,24902,24905,24926,24928,24940,24946,24952,24955,24956,24959,24960,24961,24963,24964,24971,24973,24978,24979,24983,24984,24988,24989,24991,24992,24997,25e3,25002,25005,25016,25017,25020,25024,25025,25026,25038,25039,25045,25052,25053,25054,25055,25057,25058,25063,25065,25061,25068,25069,25071,25089,25091,25092,25095,25107,25109,25116,25120,25122,25123,25127,25129,25131,25145,25149,25154,25155,25156,25158,25164,25168,25169,25170,25172,25174,25178,25180,25188,25197,25199,25203,25210,25213,25229,25230,25231,25232,25254,25256,25267,25270,25271,25274,25278,25279,25284,25294,25301,25302,25306,25322,25330,25332,25340,25341,25347,25348,25354,25355,25357,25360,25363,25366,25368,25385,25386,25389,25397,25398,25401,25404,25409,25410,25411,25412,25414,25418,25419,25422,25426,25427,25428,25432,25435,25445,25446,25452,25453,25457,25460,25461,25464,25468,25469,25471,25474,25476,25479,25482,25488,25492,25493,25497,25498,25502,25508,25510,25517,25518,25519,25533,25537,25541,25544,25550,25553,25555,25556,25557,25564,25568,25573,25578,25580,25586,25587,25589,25592,25593,25609,25610,25616,25618,25620,25624,25630,25632,25634,25636,25637,25641,25642,25647,25648,25653,25661,25663,25675,25679,25681,25682,25683,25684,25690,25691,25692,25693,25695,25696,25697,25699,25709,25715,25716,25723,25725,25733,25735,25743,25744,25745,25752,25753,25755,25757,25759,25761,25763,25766,25768,25772,25779,25789,25790,25791,25796,25801,25802,25803,25804,25806,25808,25809,25813,25815,25828,25829,25833,25834,25837,25840,25845,25847,25851,25855,25857,25860,25864,25865,25866,25871,25875,25876,25878,25881,25883,25886,25887,25890,25894,25897,25902,25905,25914,25916,25917,25923,25927,25929,25936,25938,25940,25951,25952,25959,25963,25978,25981,25985,25989,25994,26002,26005,26008,26013,26016,26019,26022,26030,26034,26035,26036,26047,26050,26056,26057,26062,26064,26068,26070,26072,26079,26096,26098,26100,26101,26105,26110,26111,26112,26116,26120,26121,26125,26129,26130,26133,26134,26141,26142,26145,26146,26147,26148,26150,26153,26154,26155,26156,26158,26160,26161,26163,26169,26167,26176,26181,26182,26186,26188,26193,26190,26199,26200,26201,26203,26204,26208,26209,26363,26218,26219,26220,26238,26227,26229,26239,26231,26232,26233,26235,26240,26236,26251,26252,26253,26256,26258,26265,26266,26267,26268,26271,26272,26276,26285,26289,26290,26293,26299,26303,26304,26306,26307,26312,26316,26318,26319,26324,26331,26335,26344,26347,26348,26350,26362,26373,26375,26382,26387,26393,26396,26400,26402,26419,26430,26437,26439,26440,26444,26452,26453,26461,26470,26476,26478,26484,26486,26491,26497,26500,26510,26511,26513,26515,26518,26520,26521,26523,26544,26545,26546,26549,26555,26556,26557,26617,26560,26562,26563,26565,26568,26569,26578,26583,26585,26588,26593,26598,26608,26610,26614,26615,26706,26644,26649,26653,26655,26664,26663,26668,26669,26671,26672,26673,26675,26683,26687,26692,26693,26698,26700,26709,26711,26712,26715,26731,26734,26735,26736,26737,26738,26741,26745,26746,26747,26748,26754,26756,26758,26760,26774,26776,26778,26780,26785,26787,26789,26793,26794,26798,26802,26811,26821,26824,26828,26831,26832,26833,26835,26838,26841,26844,26845,26853,26856,26858,26859,26860,26861,26864,26865,26869,26870,26875,26876,26877,26886,26889,26890,26896,26897,26899,26902,26903,26929,26931,26933,26936,26939,26946,26949,26953,26958,26967,26971,26979,26980,26981,26982,26984,26985,26988,26992,26993,26994,27002,27003,27007,27008,27021,27026,27030,27032,27041,27045,27046,27048,27051,27053,27055,27063,27064,27066,27068,27077,27080,27089,27094,27095,27106,27109,27118,27119,27121,27123,27125,27134,27136,27137,27139,27151,27153,27157,27162,27165,27168,27172,27176,27184,27186,27188,27191,27195,27198,27199,27205,27206,27209,27210,27214,27216,27217,27218,27221,27222,27227,27236,27239,27242,27249,27251,27262,27265,27267,27270,27271,27273,27275,27281,27291,27293,27294,27295,27301,27307,27311,27312,27313,27316,27325,27326,27327,27334,27337,27336,27340,27344,27348,27349,27350,27356,27357,27364,27367,27372,27376,27377,27378,27388,27389,27394,27395,27398,27399,27401,27407,27408,27409,27415,27419,27422,27428,27432,27435,27436,27439,27445,27446,27451,27455,27462,27466,27469,27474,27478,27480,27485,27488,27495,27499,27502,27504,27509,27517,27518,27522,27525,27543,27547,27551,27552,27554,27555,27560,27561,27564,27565,27566,27568,27576,27577,27581,27582,27587,27588,27593,27596,27606,27610,27617,27619,27622,27623,27630,27633,27639,27641,27647,27650,27652,27653,27657,27661,27662,27664,27666,27673,27679,27686,27687,27688,27692,27694,27699,27701,27702,27706,27707,27711,27722,27723,27725,27727,27730,27732,27737,27739,27740,27755,27757,27759,27764,27766,27768,27769,27771,27781,27782,27783,27785,27796,27797,27799,27800,27804,27807,27824,27826,27828,27842,27846,27853,27855,27856,27857,27858,27860,27862,27866,27868,27872,27879,27881,27883,27884,27886,27890,27892,27908,27911,27914,27918,27919,27921,27923,27930,27942,27943,27944,27751,27950,27951,27953,27961,27964,27967,27991,27998,27999,28001,28005,28007,28015,28016,28028,28034,28039,28049,28050,28052,28054,28055,28056,28074,28076,28084,28087,28089,28093,28095,28100,28104,28106,28110,28111,28118,28123,28125,28127,28128,28130,28133,28137,28143,28144,28148,28150,28156,28160,28164,28190,28194,28199,28210,28214,28217,28219,28220,28228,28229,28232,28233,28235,28239,28241,28242,28243,28244,28247,28252,28253,28254,28258,28259,28264,28275,28283,28285,28301,28307,28313,28320,28327,28333,28334,28337,28339,28347,28351,28352,28353,28355,28359,28360,28362,28365,28366,28367,28395,28397,28398,28409,28411,28413,28420,28424,28426,28428,28429,28438,28440,28442,28443,28454,28457,28458,28463,28464,28467,28470,28475,28476,28461,28495,28497,28498,28499,28503,28505,28506,28509,28510,28513,28514,28520,28524,28541,28542,28547,28551,28552,28555,28556,28557,28560,28562,28563,28564,28566,28570,28575,28576,28581,28582,28583,28584,28590,28591,28592,28597,28598,28604,28613,28615,28616,28618,28634,28638,28648,28649,28656,28661,28665,28668,28669,28672,28677,28678,28679,28685,28695,28704,28707,28719,28724,28727,28729,28732,28739,28740,28744,28745,28746,28747,28756,28757,28765,28766,28750,28772,28773,28780,28782,28789,28790,28798,28801,28805,28806,28820,28821,28822,28823,28824,28827,28836,28843,28848,28849,28852,28855,28874,28881,28883,28884,28885,28886,28888,28892,28900,28922,28931,28932,28933,28934,28935,28939,28940,28943,28958,28960,28971,28973,28975,28976,28977,28984,28993,28997,28998,28999,29002,29003,29008,29010,29015,29018,29020,29022,29024,29032,29049,29056,29061,29063,29068,29074,29082,29083,29088,29090,29103,29104,29106,29107,29114,29119,29120,29121,29124,29131,29132,29139,29142,29145,29146,29148,29176,29182,29184,29191,29192,29193,29203,29207,29210,29213,29215,29220,29227,29231,29236,29240,29241,29249,29250,29251,29253,29262,29263,29264,29267,29269,29270,29274,29276,29278,29280,29283,29288,29291,29294,29295,29297,29303,29304,29307,29308,29311,29316,29321,29325,29326,29331,29339,29352,29357,29358,29361,29364,29374,29377,29383,29385,29388,29397,29398,29400,29407,29413,29427,29428,29434,29435,29438,29442,29444,29445,29447,29451,29453,29458,29459,29464,29465,29470,29474,29476,29479,29480,29484,29489,29490,29493,29498,29499,29501,29507,29517,29520,29522,29526,29528,29533,29534,29535,29536,29542,29543,29545,29547,29548,29550,29551,29553,29559,29561,29564,29568,29569,29571,29573,29574,29582,29584,29587,29589,29591,29592,29596,29598,29599,29600,29602,29605,29606,29610,29611,29613,29621,29623,29625,29628,29629,29631,29637,29638,29641,29643,29644,29647,29650,29651,29654,29657,29661,29665,29667,29670,29671,29673,29684,29685,29687,29689,29690,29691,29693,29695,29696,29697,29700,29703,29706,29713,29722,29723,29732,29734,29736,29737,29738,29739,29740,29741,29742,29743,29744,29745,29753,29760,29763,29764,29766,29767,29771,29773,29777,29778,29783,29789,29794,29798,29799,29800,29803,29805,29806,29809,29810,29824,29825,29829,29830,29831,29833,29839,29840,29841,29842,29848,29849,29850,29852,29855,29856,29857,29859,29862,29864,29865,29866,29867,29870,29871,29873,29874,29877,29881,29883,29887,29896,29897,29900,29904,29907,29912,29914,29915,29918,29919,29924,29928,29930,29931,29935,29940,29946,29947,29948,29951,29958,29970,29974,29975,29984,29985,29988,29991,29993,29994,29999,30006,30009,30013,30014,30015,30016,30019,30023,30024,30030,30032,30034,30039,30046,30047,30049,30063,30065,30073,30074,30075,30076,30077,30078,30081,30085,30096,30098,30099,30101,30105,30108,30114,30116,30132,30138,30143,30144,30145,30148,30150,30156,30158,30159,30167,30172,30175,30176,30177,30180,30183,30188,30190,30191,30193,30201,30208,30210,30211,30212,30215,30216,30218,30220,30223,30226,30227,30229,30230,30233,30235,30236,30237,30238,30243,30245,30246,30249,30253,30258,30259,30261,30264,30265,30266,30268,30282,30272,30273,30275,30276,30277,30281,30283,30293,30297,30303,30308,30309,30317,30318,30319,30321,30324,30337,30341,30348,30349,30357,30363,30364,30365,30367,30368,30370,30371,30372,30373,30374,30375,30376,30378,30381,30397,30401,30405,30409,30411,30412,30414,30420,30425,30432,30438,30440,30444,30448,30449,30454,30457,30460,30464,30470,30474,30478,30482,30484,30485,30487,30489,30490,30492,30498,30504,30509,30510,30511,30516,30517,30518,30521,30525,30526,30530,30533,30534,30538,30541,30542,30543,30546,30550,30551,30556,30558,30559,30560,30562,30564,30567,30570,30572,30576,30578,30579,30580,30586,30589,30592,30596,30604,30605,30612,30613,30614,30618,30623,30626,30631,30634,30638,30639,30641,30645,30654,30659,30665,30673,30674,30677,30681,30686,30687,30688,30692,30694,30698,30700,30704,30705,30708,30712,30715,30725,30726,30729,30733,30734,30737,30749,30753,30754,30755,30765,30766,30768,30773,30775,30787,30788,30791,30792,30796,30798,30802,30812,30814,30816,30817,30819,30820,30824,30826,30830,30842,30846,30858,30863,30868,30872,30881,30877,30878,30879,30884,30888,30892,30893,30896,30897,30898,30899,30907,30909,30911,30919,30920,30921,30924,30926,30930,30931,30933,30934,30948,30939,30943,30944,30945,30950,30954,30962,30963,30976,30966,30967,30970,30971,30975,30982,30988,30992,31002,31004,31006,31007,31008,31013,31015,31017,31021,31025,31028,31029,31035,31037,31039,31044,31045,31046,31050,31051,31055,31057,31060,31064,31067,31068,31079,31081,31083,31090,31097,31099,31100,31102,31115,31116,31121,31123,31124,31125,31126,31128,31131,31132,31137,31144,31145,31147,31151,31153,31156,31160,31163,31170,31172,31175,31176,31178,31183,31188,31190,31194,31197,31198,31200,31202,31205,31210,31211,31213,31217,31224,31228,31234,31235,31239,31241,31242,31244,31249,31253,31259,31262,31265,31271,31275,31277,31279,31280,31284,31285,31288,31289,31290,31300,31301,31303,31304,31308,31317,31318,31321,31324,31325,31327,31328,31333,31335,31338,31341,31349,31352,31358,31360,31362,31365,31366,31370,31371,31376,31377,31380,31390,31392,31395,31404,31411,31413,31417,31419,31420,31430,31433,31436,31438,31441,31451,31464,31465,31467,31468,31473,31476,31483,31485,31486,31495,31508,31519,31523,31527,31529,31530,31531,31533,31534,31535,31536,31537,31540,31549,31551,31552,31553,31559,31566,31573,31584,31588,31590,31593,31594,31597,31599,31602,31603,31607,31620,31625,31630,31632,31633,31638,31643,31646,31648,31653,31660,31663,31664,31666,31669,31670,31674,31675,31676,31677,31682,31685,31688,31690,31700,31702,31703,31705,31706,31707,31720,31722,31730,31732,31733,31736,31737,31738,31740,31742,31745,31746,31747,31748,31750,31753,31755,31756,31758,31759,31769,31771,31776,31781,31782,31784,31788,31793,31795,31796,31798,31801,31802,31814,31818,31829,31825,31826,31827,31833,31834,31835,31836,31837,31838,31841,31843,31847,31849,31853,31854,31856,31858,31865,31868,31869,31878,31879,31887,31892,31902,31904,31910,31920,31926,31927,31930,31931,31932,31935,31940,31943,31944,31945,31949,31951,31955,31956,31957,31959,31961,31962,31965,31974,31977,31979,31989,32003,32007,32008,32009,32015,32017,32018,32019,32022,32029,32030,32035,32038,32042,32045,32049,32060,32061,32062,32064,32065,32071,32072,32077,32081,32083,32087,32089,32090,32092,32093,32101,32103,32106,32112,32120,32122,32123,32127,32129,32130,32131,32133,32134,32136,32139,32140,32141,32145,32150,32151,32157,32158,32166,32167,32170,32179,32182,32183,32185,32194,32195,32196,32197,32198,32204,32205,32206,32215,32217,32256,32226,32229,32230,32234,32235,32237,32241,32245,32246,32249,32250,32264,32272,32273,32277,32279,32284,32285,32288,32295,32296,32300,32301,32303,32307,32310,32319,32324,32325,32327,32334,32336,32338,32344,32351,32353,32354,32357,32363,32366,32367,32371,32376,32382,32385,32390,32391,32394,32397,32401,32405,32408,32410,32413,32414,32572,32571,32573,32574,32575,32579,32580,32583,32591,32594,32595,32603,32604,32605,32609,32611,32612,32613,32614,32621,32625,32637,32638,32639,32640,32651,32653,32655,32656,32657,32662,32663,32668,32673,32674,32678,32682,32685,32692,32700,32703,32704,32707,32712,32718,32719,32731,32735,32739,32741,32744,32748,32750,32751,32754,32762,32765,32766,32767,32775,32776,32778,32781,32782,32783,32785,32787,32788,32790,32797,32798,32799,32800,32804,32806,32812,32814,32816,32820,32821,32823,32825,32826,32828,32830,32832,32836,32864,32868,32870,32877,32881,32885,32897,32904,32910,32924,32926,32934,32935,32939,32952,32953,32968,32973,32975,32978,32980,32981,32983,32984,32992,33005,33006,33008,33010,33011,33014,33017,33018,33022,33027,33035,33046,33047,33048,33052,33054,33056,33060,33063,33068,33072,33077,33082,33084,33093,33095,33098,33100,33106,33111,33120,33121,33127,33128,33129,33133,33135,33143,33153,33168,33156,33157,33158,33163,33166,33174,33176,33179,33182,33186,33198,33202,33204,33211,33227,33219,33221,33226,33230,33231,33237,33239,33243,33245,33246,33249,33252,33259,33260,33264,33265,33266,33269,33270,33272,33273,33277,33279,33280,33283,33295,33299,33300,33305,33306,33309,33313,33314,33320,33330,33332,33338,33347,33348,33349,33350,33355,33358,33359,33361,33366,33372,33376,33379,33383,33389,33396,33403,33405,33407,33408,33409,33411,33412,33415,33417,33418,33422,33425,33428,33430,33432,33434,33435,33440,33441,33443,33444,33447,33448,33449,33450,33454,33456,33458,33460,33463,33466,33468,33470,33471,33478,33488,33493,33498,33504,33506,33508,33512,33514,33517,33519,33526,33527,33533,33534,33536,33537,33543,33544,33546,33547,33620,33563,33565,33566,33567,33569,33570,33580,33581,33582,33584,33587,33591,33594,33596,33597,33602,33603,33604,33607,33613,33614,33617,33621,33622,33623,33648,33656,33661,33663,33664,33666,33668,33670,33677,33682,33684,33685,33688,33689,33691,33692,33693,33702,33703,33705,33708,33726,33727,33728,33735,33737,33743,33744,33745,33748,33757,33619,33768,33770,33782,33784,33785,33788,33793,33798,33802,33807,33809,33813,33817,33709,33839,33849,33861,33863,33864,33866,33869,33871,33873,33874,33878,33880,33881,33882,33884,33888,33892,33893,33895,33898,33904,33907,33908,33910,33912,33916,33917,33921,33925,33938,33939,33941,33950,33958,33960,33961,33962,33967,33969,33972,33978,33981,33982,33984,33986,33991,33992,33996,33999,34003,34012,34023,34026,34031,34032,34033,34034,34039,34098,34042,34043,34045,34050,34051,34055,34060,34062,34064,34076,34078,34082,34083,34084,34085,34087,34090,34091,34095,34099,34100,34102,34111,34118,34127,34128,34129,34130,34131,34134,34137,34140,34141,34142,34143,34144,34145,34146,34148,34155,34159,34169,34170,34171,34173,34175,34177,34181,34182,34185,34187,34188,34191,34195,34200,34205,34207,34208,34210,34213,34215,34228,34230,34231,34232,34236,34237,34238,34239,34242,34247,34250,34251,34254,34221,34264,34266,34271,34272,34278,34280,34285,34291,34294,34300,34303,34304,34308,34309,34317,34318,34320,34321,34322,34328,34329,34331,34334,34337,34343,34345,34358,34360,34362,34364,34365,34368,34370,34374,34386,34387,34390,34391,34392,34393,34397,34400,34401,34402,34403,34404,34409,34412,34415,34421,34422,34423,34426,34445,34449,34454,34456,34458,34460,34465,34470,34471,34472,34477,34481,34483,34484,34485,34487,34488,34489,34495,34496,34497,34499,34501,34513,34514,34517,34519,34522,34524,34528,34531,34533,34535,34440,34554,34556,34557,34564,34565,34567,34571,34574,34575,34576,34579,34580,34585,34590,34591,34593,34595,34600,34606,34607,34609,34610,34617,34618,34620,34621,34622,34624,34627,34629,34637,34648,34653,34657,34660,34661,34671,34673,34674,34683,34691,34692,34693,34694,34695,34696,34697,34699,34700,34704,34707,34709,34711,34712,34713,34718,34720,34723,34727,34732,34733,34734,34737,34741,34750,34751,34753,34760,34761,34762,34766,34773,34774,34777,34778,34780,34783,34786,34787,34788,34794,34795,34797,34801,34803,34808,34810,34815,34817,34819,34822,34825,34826,34827,34832,34841,34834,34835,34836,34840,34842,34843,34844,34846,34847,34856,34861,34862,34864,34866,34869,34874,34876,34881,34883,34885,34888,34889,34890,34891,34894,34897,34901,34902,34904,34906,34908,34911,34912,34916,34921,34929,34937,34939,34944,34968,34970,34971,34972,34975,34976,34984,34986,35002,35005,35006,35008,35018,35019,35020,35021,35022,35025,35026,35027,35035,35038,35047,35055,35056,35057,35061,35063,35073,35078,35085,35086,35087,35093,35094,35096,35097,35098,35100,35104,35110,35111,35112,35120,35121,35122,35125,35129,35130,35134,35136,35138,35141,35142,35145,35151,35154,35159,35162,35163,35164,35169,35170,35171,35179,35182,35184,35187,35189,35194,35195,35196,35197,35209,35213,35216,35220,35221,35227,35228,35231,35232,35237,35248,35252,35253,35254,35255,35260,35284,35285,35286,35287,35288,35301,35305,35307,35309,35313,35315,35318,35321,35325,35327,35332,35333,35335,35343,35345,35346,35348,35349,35358,35360,35362,35364,35366,35371,35372,35375,35381,35383,35389,35390,35392,35395,35397,35399,35401,35405,35406,35411,35414,35415,35416,35420,35421,35425,35429,35431,35445,35446,35447,35449,35450,35451,35454,35455,35456,35459,35462,35467,35471,35472,35474,35478,35479,35481,35487,35495,35497,35502,35503,35507,35510,35511,35515,35518,35523,35526,35528,35529,35530,35537,35539,35540,35541,35543,35549,35551,35564,35568,35572,35573,35574,35580,35583,35589,35590,35595,35601,35612,35614,35615,35594,35629,35632,35639,35644,35650,35651,35652,35653,35654,35656,35666,35667,35668,35673,35661,35678,35683,35693,35702,35704,35705,35708,35710,35713,35716,35717,35723,35725,35727,35732,35733,35740,35742,35743,35896,35897,35901,35902,35909,35911,35913,35915,35919,35921,35923,35924,35927,35928,35931,35933,35929,35939,35940,35942,35944,35945,35949,35955,35957,35958,35963,35966,35974,35975,35979,35984,35986,35987,35993,35995,35996,36004,36025,36026,36037,36038,36041,36043,36047,36054,36053,36057,36061,36065,36072,36076,36079,36080,36082,36085,36087,36088,36094,36095,36097,36099,36105,36114,36119,36123,36197,36201,36204,36206,36223,36226,36228,36232,36237,36240,36241,36245,36254,36255,36256,36262,36267,36268,36271,36274,36277,36279,36281,36283,36288,36293,36294,36295,36296,36298,36302,36305,36308,36309,36311,36313,36324,36325,36327,36332,36336,36284,36337,36338,36340,36349,36353,36356,36357,36358,36363,36369,36372,36374,36384,36385,36386,36387,36390,36391,36401,36403,36406,36407,36408,36409,36413,36416,36417,36427,36429,36430,36431,36436,36443,36444,36445,36446,36449,36450,36457,36460,36461,36463,36464,36465,36473,36474,36475,36482,36483,36489,36496,36498,36501,36506,36507,36509,36510,36514,36519,36521,36525,36526,36531,36533,36538,36539,36544,36545,36547,36548,36551,36559,36561,36564,36572,36584,36590,36592,36593,36599,36601,36602,36589,36608,36610,36615,36616,36623,36624,36630,36631,36632,36638,36640,36641,36643,36645,36647,36648,36652,36653,36654,36660,36661,36662,36663,36666,36672,36673,36675,36679,36687,36689,36690,36691,36692,36693,36696,36701,36702,36709,36765,36768,36769,36772,36773,36774,36789,36790,36792,36798,36800,36801,36806,36810,36811,36813,36816,36818,36819,36821,36832,36835,36836,36840,36846,36849,36853,36854,36859,36862,36866,36868,36872,36876,36888,36891,36904,36905,36911,36906,36908,36909,36915,36916,36919,36927,36931,36932,36940,36955,36957,36962,36966,36967,36972,36976,36980,36985,36997,37e3,37003,37004,37006,37008,37013,37015,37016,37017,37019,37024,37025,37026,37029,37040,37042,37043,37044,37046,37053,37068,37054,37059,37060,37061,37063,37064,37077,37079,37080,37081,37084,37085,37087,37093,37074,37110,37099,37103,37104,37108,37118,37119,37120,37124,37125,37126,37128,37133,37136,37140,37142,37143,37144,37146,37148,37150,37152,37157,37154,37155,37159,37161,37166,37167,37169,37172,37174,37175,37177,37178,37180,37181,37187,37191,37192,37199,37203,37207,37209,37210,37211,37217,37220,37223,37229,37236,37241,37242,37243,37249,37251,37253,37254,37258,37262,37265,37267,37268,37269,37272,37278,37281,37286,37288,37292,37293,37294,37296,37297,37298,37299,37302,37307,37308,37309,37311,37314,37315,37317,37331,37332,37335,37337,37338,37342,37348,37349,37353,37354,37356,37357,37358,37359,37360,37361,37367,37369,37371,37373,37376,37377,37380,37381,37382,37383,37385,37386,37388,37392,37394,37395,37398,37400,37404,37405,37411,37412,37413,37414,37416,37422,37423,37424,37427,37429,37430,37432,37433,37434,37436,37438,37440,37442,37443,37446,37447,37450,37453,37454,37455,37457,37464,37465,37468,37469,37472,37473,37477,37479,37480,37481,37486,37487,37488,37493,37494,37495,37496,37497,37499,37500,37501,37503,37512,37513,37514,37517,37518,37522,37527,37529,37535,37536,37540,37541,37543,37544,37547,37551,37554,37558,37560,37562,37563,37564,37565,37567,37568,37569,37570,37571,37573,37574,37575,37576,37579,37580,37581,37582,37584,37587,37589,37591,37592,37593,37596,37597,37599,37600,37601,37603,37605,37607,37608,37612,37614,37616,37625,37627,37631,37632,37634,37640,37645,37649,37652,37653,37660,37661,37662,37663,37665,37668,37669,37671,37673,37674,37683,37684,37686,37687,37703,37704,37705,37712,37713,37714,37717,37719,37720,37722,37726,37732,37733,37735,37737,37738,37741,37743,37744,37745,37747,37748,37750,37754,37757,37759,37760,37761,37762,37768,37770,37771,37773,37775,37778,37781,37784,37787,37790,37793,37795,37796,37798,37800,37803,37812,37813,37814,37818,37801,37825,37828,37829,37830,37831,37833,37834,37835,37836,37837,37843,37849,37852,37854,37855,37858,37862,37863,37881,37879,37880,37882,37883,37885,37889,37890,37892,37896,37897,37901,37902,37903,37909,37910,37911,37919,37934,37935,37937,37938,37939,37940,37947,37951,37949,37955,37957,37960,37962,37964,37973,37977,37980,37983,37985,37987,37992,37995,37997,37998,37999,38001,38002,38020,38019,38264,38265,38270,38276,38280,38284,38285,38286,38301,38302,38303,38305,38310,38313,38315,38316,38324,38326,38330,38333,38335,38342,38344,38345,38347,38352,38353,38354,38355,38361,38362,38365,38366,38367,38368,38372,38374,38429,38430,38434,38436,38437,38438,38444,38449,38451,38455,38456,38457,38458,38460,38461,38465,38482,38484,38486,38487,38488,38497,38510,38516,38523,38524,38526,38527,38529,38530,38531,38532,38537,38545,38550,38554,38557,38559,38564,38565,38566,38569,38574,38575,38579,38586,38602,38610,23986,38616,38618,38621,38622,38623,38633,38639,38641,38650,38658,38659,38661,38665,38682,38683,38685,38689,38690,38691,38696,38705,38707,38721,38723,38730,38734,38735,38741,38743,38744,38746,38747,38755,38759,38762,38766,38771,38774,38775,38776,38779,38781,38783,38784,38793,38805,38806,38807,38809,38810,38814,38815,38818,38828,38830,38833,38834,38837,38838,38840,38841,38842,38844,38846,38847,38849,38852,38853,38855,38857,38858,38860,38861,38862,38864,38865,38868,38871,38872,38873,38877,38878,38880,38875,38881,38884,38895,38897,38900,38903,38904,38906,38919,38922,38937,38925,38926,38932,38934,38940,38942,38944,38947,38950,38955,38958,38959,38960,38962,38963,38965,38949,38974,38980,38983,38986,38993,38994,38995,38998,38999,39001,39002,39010,39011,39013,39014,39018,39020,39083,39085,39086,39088,39092,39095,39096,39098,39099,39103,39106,39109,39112,39116,39137,39139,39141,39142,39143,39146,39155,39158,39170,39175,39176,39185,39189,39190,39191,39194,39195,39196,39199,39202,39206,39207,39211,39217,39218,39219,39220,39221,39225,39226,39227,39228,39232,39233,39238,39239,39240,39245,39246,39252,39256,39257,39259,39260,39262,39263,39264,39323,39325,39327,39334,39344,39345,39346,39349,39353,39354,39357,39359,39363,39369,39379,39380,39385,39386,39388,39390,39399,39402,39403,39404,39408,39412,39413,39417,39421,39422,39426,39427,39428,39435,39436,39440,39441,39446,39454,39456,39458,39459,39460,39463,39469,39470,39475,39477,39478,39480,39495,39489,39492,39498,39499,39500,39502,39505,39508,39510,39517,39594,39596,39598,39599,39602,39604,39605,39606,39609,39611,39614,39615,39617,39619,39622,39624,39630,39632,39634,39637,39638,39639,39643,39644,39648,39652,39653,39655,39657,39660,39666,39667,39669,39673,39674,39677,39679,39680,39681,39682,39683,39684,39685,39688,39689,39691,39692,39693,39694,39696,39698,39702,39705,39707,39708,39712,39718,39723,39725,39731,39732,39733,39735,39737,39738,39741,39752,39755,39756,39765,39766,39767,39771,39774,39777,39779,39781,39782,39784,39786,39787,39788,39789,39790,39795,39797,39799,39800,39801,39807,39808,39812,39813,39814,39815,39817,39818,39819,39821,39823,39824,39828,39834,39837,39838,39846,39847,39849,39852,39856,39857,39858,39863,39864,39867,39868,39870,39871,39873,39879,39880,39886,39888,39895,39896,39901,39903,39909,39911,39914,39915,39919,39923,39927,39928,39929,39930,39933,39935,39936,39938,39947,39951,39953,39958,39960,39961,39962,39964,39966,39970,39971,39974,39975,39976,39977,39978,39985,39989,39990,39991,39997,40001,40003,40004,40005,40009,40010,40014,40015,40016,40019,40020,40022,40024,40027,40029,40030,40031,40035,40041,40042,40028,40043,40040,40046,40048,40050,40053,40055,40059,40166,40178,40183,40185,40203,40194,40209,40215,40216,40220,40221,40222,40239,40240,40242,40243,40244,40250,40252,40261,40253,40258,40259,40263,40266,40275,40276,40287,40291,40290,40293,40297,40298,40299,40304,40310,40311,40315,40316,40318,40323,40324,40326,40330,40333,40334,40338,40339,40341,40342,40343,40344,40353,40362,40364,40366,40369,40373,40377,40380,40383,40387,40391,40393,40394,40404,40405,40406,40407,40410,40414,40415,40416,40421,40423,40425,40427,40430,40432,40435,40436,40446,40458,40450,40455,40462,40464,40465,40466,40469,40470,40473,40476,40477,40570,40571,40572,40576,40578,40579,40580,40581,40583,40590,40591,40598,40600,40603,40606,40612,40616,40620,40622,40623,40624,40627,40628,40629,40646,40648,40651,40661,40671,40676,40679,40684,40685,40686,40688,40689,40690,40693,40696,40703,40706,40707,40713,40719,40720,40721,40722,40724,40726,40727,40729,40730,40731,40735,40738,40742,40746,40747,40751,40753,40754,40756,40759,40761,40762,40764,40765,40767,40769,40771,40772,40773,40774,40775,40787,40789,40790,40791,40792,40794,40797,40798,40808,40809,40813,40814,40815,40816,40817,40819,40821,40826,40829,40847,40848,40849,40850,40852,40854,40855,40862,40865,40866,40867,40869,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null], ibm866:[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,9617,9618,9619,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,9576,9572,9573,9561,9560,9554,9555,9579,9578,9496,9484,9608,9604,9612,9616,9600,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1025,1105,1028,1108,1031,1111,1038,1118,176,8729,183,8730,8470,164,9632,160],"iso-8859-2":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,728,321,164,317,346,167,168,352,350,356,377,173,381,379,176,261,731,322,180,318,347,711,184,353,351,357,378,733,382,380,340,193,194,258,196,313,262,199,268,201,280,203,282,205,206,270,272,323,327,211,212,336,214,215,344,366,218,368,220,221,354,223,341,225,226,259,228,314,263,231,269,233,281,235,283,237,238,271,273,324,328,243,244,337,246,247,345,367,250,369,252,253,355,729],"iso-8859-3":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,294,728,163,164,null,292,167,168,304,350,286,308,173,null,379,176,295,178,179,180,181,293,183,184,305,351,287,309,189,null,380,192,193,194,null,196,266,264,199,200,201,202,203,204,205,206,207,null,209,210,211,212,288,214,215,284,217,218,219,220,364,348,223,224,225,226,null,228,267,265,231,232,233,234,235,236,237,238,239,null,241,242,243,244,289,246,247,285,249,250,251,252,365,349,729],"iso-8859-4":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,312,342,164,296,315,167,168,352,274,290,358,173,381,175,176,261,731,343,180,297,316,711,184,353,275,291,359,330,382,331,256,193,194,195,196,197,198,302,268,201,280,203,278,205,206,298,272,325,332,310,212,213,214,215,216,370,218,219,220,360,362,223,257,225,226,227,228,229,230,303,269,233,281,235,279,237,238,299,273,326,333,311,244,245,246,247,248,371,250,251,252,361,363,729],"iso-8859-5":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,173,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,8470,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,167,1118,1119],"iso-8859-6":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,null,null,null,164,null,null,null,null,null,null,null,1548,173,null,null,null,null,null,null,null,null,null,null,null,null,null,1563,null,null,null,1567,null,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,null,null,null,null,null,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,null,null,null,null,null,null,null,null,null,null,null,null,null],"iso-8859-7":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,8216,8217,163,8364,8367,166,167,168,169,890,171,172,173,null,8213,176,177,178,179,900,901,902,183,904,905,906,187,908,189,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,null,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,null],"iso-8859-8":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,null,162,163,164,165,166,167,168,169,215,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,247,187,188,189,190,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,8215,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,null,null,8206,8207,null],"iso-8859-10":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,274,290,298,296,310,167,315,272,352,358,381,173,362,330,176,261,275,291,299,297,311,183,316,273,353,359,382,8213,363,331,256,193,194,195,196,197,198,302,268,201,280,203,278,205,206,207,208,325,332,211,212,213,214,360,216,370,218,219,220,221,222,223,257,225,226,227,228,229,230,303,269,233,281,235,279,237,238,239,240,326,333,243,244,245,246,361,248,371,250,251,252,253,254,312],"iso-8859-13":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,8221,162,163,164,8222,166,167,216,169,342,171,172,173,174,198,176,177,178,179,8220,181,182,183,248,185,343,187,188,189,190,230,260,302,256,262,196,197,280,274,268,201,377,278,290,310,298,315,352,323,325,211,332,213,214,215,370,321,346,362,220,379,381,223,261,303,257,263,228,229,281,275,269,233,378,279,291,311,299,316,353,324,326,243,333,245,246,247,371,322,347,363,252,380,382,8217],"iso-8859-14":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,7682,7683,163,266,267,7690,167,7808,169,7810,7691,7922,173,174,376,7710,7711,288,289,7744,7745,182,7766,7809,7767,7811,7776,7923,7812,7813,7777,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,372,209,210,211,212,213,214,7786,216,217,218,219,220,221,374,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,373,241,242,243,244,245,246,7787,248,249,250,251,252,253,375,255],"iso-8859-15":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,8364,165,352,167,353,169,170,171,172,173,174,175,176,177,178,179,381,181,182,183,382,185,186,187,338,339,376,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255],"iso-8859-16":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,261,321,8364,8222,352,167,353,169,536,171,377,173,378,379,176,177,268,322,381,8221,182,183,382,269,537,187,338,339,376,380,192,193,194,258,196,262,198,199,200,201,202,203,204,205,206,207,272,323,210,211,212,336,214,346,368,217,218,219,220,280,538,223,224,225,226,259,228,263,230,231,232,233,234,235,236,237,238,239,273,324,242,243,244,337,246,347,369,249,250,251,252,281,539,255],"koi8-r":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,1025,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066],"koi8-u":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,1108,9556,1110,1111,9559,9560,9561,9562,9563,1169,1118,9566,9567,9568,9569,1025,1028,9571,1030,1031,9574,9575,9576,9577,9578,1168,1038,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066],macintosh:[196,197,199,201,209,214,220,225,224,226,228,227,229,231,233,232,234,235,237,236,238,239,241,243,242,244,246,245,250,249,251,252,8224,176,162,163,167,8226,182,223,174,169,8482,180,168,8800,198,216,8734,177,8804,8805,165,181,8706,8721,8719,960,8747,170,186,937,230,248,191,161,172,8730,402,8776,8710,171,187,8230,160,192,195,213,338,339,8211,8212,8220,8221,8216,8217,247,9674,255,376,8260,8364,8249,8250,64257,64258,8225,183,8218,8222,8240,194,202,193,203,200,205,206,207,204,211,212,63743,210,218,219,217,305,710,732,175,728,729,730,184,733,731,711],"windows-874":[8364,129,130,131,132,8230,134,135,136,137,138,139,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,152,153,154,155,156,157,158,159,160,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,null,null,null,null,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,null,null,null,null],"windows-1250":[8364,129,8218,131,8222,8230,8224,8225,136,8240,352,8249,346,356,381,377,144,8216,8217,8220,8221,8226,8211,8212,152,8482,353,8250,347,357,382,378,160,711,728,321,164,260,166,167,168,169,350,171,172,173,174,379,176,177,731,322,180,181,182,183,184,261,351,187,317,733,318,380,340,193,194,258,196,313,262,199,268,201,280,203,282,205,206,270,272,323,327,211,212,336,214,215,344,366,218,368,220,221,354,223,341,225,226,259,228,314,263,231,269,233,281,235,283,237,238,271,273,324,328,243,244,337,246,247,345,367,250,369,252,253,355,729],"windows-1251":[1026,1027,8218,1107,8222,8230,8224,8225,8364,8240,1033,8249,1034,1036,1035,1039,1106,8216,8217,8220,8221,8226,8211,8212,152,8482,1113,8250,1114,1116,1115,1119,160,1038,1118,1032,164,1168,166,167,1025,169,1028,171,172,173,174,1031,176,177,1030,1110,1169,181,182,183,1105,8470,1108,187,1112,1029,1109,1111,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103],"windows-1252":[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255],"windows-1253":[8364,129,8218,402,8222,8230,8224,8225,136,8240,138,8249,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,152,8482,154,8250,156,157,158,159,160,901,902,163,164,165,166,167,168,169,null,171,172,173,174,8213,176,177,178,179,900,181,182,183,904,905,906,187,908,189,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,null,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,null],"windows-1254":[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,158,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,286,209,210,211,212,213,214,215,216,217,218,219,220,304,350,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,287,241,242,243,244,245,246,247,248,249,250,251,252,305,351,255],"windows-1255":[8364,129,8218,402,8222,8230,8224,8225,710,8240,138,8249,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,154,8250,156,157,158,159,160,161,162,163,8362,165,166,167,168,169,215,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,247,187,188,189,190,191,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,null,1467,1468,1469,1470,1471,1472,1473,1474,1475,1520,1521,1522,1523,1524,null,null,null,null,null,null,null,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,null,null,8206,8207,null],"windows-1256":[8364,1662,8218,402,8222,8230,8224,8225,710,8240,1657,8249,338,1670,1688,1672,1711,8216,8217,8220,8221,8226,8211,8212,1705,8482,1681,8250,339,8204,8205,1722,160,1548,162,163,164,165,166,167,168,169,1726,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,1563,187,188,189,190,1567,1729,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,215,1591,1592,1593,1594,1600,1601,1602,1603,224,1604,226,1605,1606,1607,1608,231,232,233,234,235,1609,1610,238,239,1611,1612,1613,1614,244,1615,1616,247,1617,249,1618,251,252,8206,8207,1746],"windows-1257":[8364,129,8218,131,8222,8230,8224,8225,136,8240,138,8249,140,168,711,184,144,8216,8217,8220,8221,8226,8211,8212,152,8482,154,8250,156,175,731,159,160,null,162,163,164,null,166,167,216,169,342,171,172,173,174,198,176,177,178,179,180,181,182,183,248,185,343,187,188,189,190,230,260,302,256,262,196,197,280,274,268,201,377,278,290,310,298,315,352,323,325,211,332,213,214,215,370,321,346,362,220,379,381,223,261,303,257,263,228,229,281,275,269,233,378,279,291,311,299,316,353,324,326,243,333,245,246,247,371,322,347,363,252,380,382,729],"windows-1258":[8364,129,8218,402,8222,8230,8224,8225,710,8240,138,8249,338,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,154,8250,339,157,158,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,258,196,197,198,199,200,201,202,203,768,205,206,207,272,209,777,211,212,416,214,215,216,217,218,219,220,431,771,223,224,225,226,259,228,229,230,231,232,233,234,235,769,237,238,239,273,241,803,243,244,417,246,247,248,249,250,251,252,432,8363,255],"x-mac-cyrillic":[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,8224,176,1168,163,167,8226,182,1030,174,169,8482,1026,1106,8800,1027,1107,8734,177,8804,8805,1110,181,1169,1032,1028,1108,1031,1111,1033,1113,1034,1114,1112,1029,172,8730,402,8776,8710,171,187,8230,160,1035,1115,1036,1116,1109,8211,8212,8220,8221,8216,8217,247,8222,1038,1118,1039,1119,8470,1025,1105,1103,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,8364]}}(this)},{}],139:[function(l,n,u){"undefined"!=typeof n&&n.exports&&(this["encoding-indexes"]=l("./encoding-indexes.js")["encoding-indexes"]),function(l){"use strict";function n(l,n,u){return n<=l&&l<=u}function u(l,n){return Math.floor(l/n)}function e(l){if(void 0===l)return{};if(l===Object(l))return l;throw TypeError("Could not convert argument to dictionary")}function t(l){for(var n=String(l),u=n.length,e=0,t=[];e57343)t.push(r);else if(56320<=r&&r<=57343)t.push(65533);else if(55296<=r&&r<=56319)if(e===u-1)t.push(65533);else{var i=l.charCodeAt(e+1);if(56320<=i&&i<=57343){var o=1023&r,a=1023&i;t.push(65536+(o<<10)+a),e+=1}else t.push(65533)}e+=1}return t}function r(l){for(var n="",u=0;u>10)+55296,(1023&e)+56320))}return n}function i(l){this.tokens=[].slice.call(l)}function o(l,n){if(l)throw TypeError("Decoder error");return n||65533}function a(l){throw TypeError("The code point "+l+" could not be encoded.")}function s(){}function f(){}function c(l){return l=String(l).trim().toLowerCase(),Object.prototype.hasOwnProperty.call(V,l)?V[l]:null}function h(l,n){return n?n[l]||null:null}function d(l,n){var u=n.indexOf(l);return u===-1?null:u}function p(n){if(!("encoding-indexes"in l))throw Error("Indexes missing. Did you forget to include encoding-indexes.js?");return l["encoding-indexes"][n]}function b(l){if(l>39419&&l<189e3||l>1237575)return null;var n,u=0,e=0,t=p("gb18030");for(n=0;n>6*e)+t];e>0;){var i=u>>6*(e-1);r.push(128|63&i),e-=1}return r}}function S(l,u){var e=u.fatal;this.handler=function(u,t){if(t===F)return K;if(n(t,0,127))return t;var r=l[t-128];return null===r?o(e):r}}function E(l,u){u.fatal;this.handler=function(u,e){if(e===F)return K;if(n(e,0,127))return e;var t=d(e,l);return null===t&&a(e),t+128}}function M(l){var u=l.fatal,e=0,t=0,r=0;this.handler=function(l,i){if(i===F&&0===e&&0===t&&0===r)return K;i!==F||0===e&&0===t&&0===r||(e=0,t=0,r=0,o(u));var a;if(0!==r){a=null,n(i,48,57)&&(a=b(10*(126*(10*(e-129)+(t-48))+(r-129))+i-48));var s=[t,r,i];return e=0,t=0,r=0,null===a?(l.prepend(s),o(u)):a}if(0!==t)return n(i,129,254)?(r=i,null):(l.prepend([t,i]),e=0,t=0,o(u));if(0!==e){if(n(i,48,57))return t=i,null;var f=e,c=null;e=0;var d=i<127?64:65;return(n(i,64,126)||n(i,128,254))&&(c=190*(f-129)+(i-d)),a=null===c?null:h(c,p("gb18030")),null===a&&n(i,0,127)&&l.prepend(i),null===a?o(u):a}return n(i,0,127)?i:128===i?8364:n(i,129,254)?(e=i,null):o(u)}}function I(l,e){l.fatal;this.handler=function(l,t){if(t===F)return K;if(n(t,0,127))return t;if(e&&8364===t)return 128;var r=d(t,p("gb18030"));if(null!==r){var i=u(r,190)+129,o=r%190,s=o<63?64:65;return[i,o+s]}if(e)return a(t);r=v(t);var f=u(u(u(r,10),126),10);r-=10*f*126*10;var c=u(u(r,10),126);r-=10*c*126;var h=u(r,10),b=r-10*h;return[f+129,c+48,h+129,b+48]}}function A(l){var u=l.fatal,e=0;this.handler=function(l,t){if(t===F&&0!==e)return e=0,o(u);if(t===F&&0===e)return K;if(0!==e){var r=e,i=null;e=0;var a=t<127?64:98;switch((n(t,64,126)||n(t,161,254))&&(i=157*(r-129)+(t-a)),i){case 1133:return[202,772];case 1135:return[202,780];case 1164:return[234,772];case 1166:return[234,780]}var s=null===i?null:h(i,p("big5"));return null===s&&n(t,0,127)&&l.prepend(t),null===s?o(u):s}return n(t,0,127)?t:n(t,129,254)?(e=t,null):o(u)}}function x(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,127))return e;var t=g(e,p("big5"));if(null===t)return a(e);var r=u(t,157)+129;if(r<161)return a(e);var i=t%157,o=i<63?64:98;return[r,i+o]}}function B(l){var u=l.fatal,e=!1,t=0;this.handler=function(l,r){if(r===F&&0!==t)return t=0,o(u);if(r===F&&0===t)return K;if(142===t&&n(r,161,223))return t=0,65377+r-161;if(143===t&&n(r,161,254))return e=!0,t=r,null;if(0!==t){var i=t;t=0;var a=null;return n(i,161,254)&&n(r,161,254)&&(a=h(94*(i-161)+(r-161),p(e?"jis0212":"jis0208"))),e=!1,n(r,161,254)||l.prepend(r),null===a?o(u):a}return n(r,0,127)?r:142===r||143===r||n(r,161,254)?(t=r,null):o(u)}}function j(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,127))return e;if(165===e)return 92;if(8254===e)return 126;if(n(e,65377,65439))return[142,e-65377+161];8226===e&&(e=65293);var t=d(e,p("jis0208"));if(null===t)return a(e);var r=u(t,94)+161,i=t%94+161;return[r,i]}}function R(l){var u=l.fatal,e={ASCII:0,Roman:1,Katakana:2,LeadByte:3,TrailByte:4,EscapeStart:5,Escape:6},t=e.ASCII,r=e.ASCII,i=0,a=!1;this.handler=function(l,s){switch(t){default:case e.ASCII:return 27===s?(t=e.EscapeStart,null):n(s,0,127)&&14!==s&&15!==s&&27!==s?(a=!1,s):s===F?K:(a=!1,o(u));case e.Roman:return 27===s?(t=e.EscapeStart,null):92===s?(a=!1,165):126===s?(a=!1,8254):n(s,0,127)&&14!==s&&15!==s&&27!==s&&92!==s&&126!==s?(a=!1,s):s===F?K:(a=!1,o(u));case e.Katakana:return 27===s?(t=e.EscapeStart,null):n(s,33,95)?(a=!1,65377+s-33):s===F?K:(a=!1,o(u));case e.LeadByte:return 27===s?(t=e.EscapeStart,null):n(s,33,126)?(a=!1,i=s,t=e.TrailByte,null):s===F?K:(a=!1,o(u));case e.TrailByte:if(27===s)return t=e.EscapeStart,o(u);if(n(s,33,126)){t=e.LeadByte;var f=94*(i-33)+s-33,c=h(f,p("jis0208"));return null===c?o(u):c}return s===F?(t=e.LeadByte,l.prepend(s),o(u)):(t=e.LeadByte,o(u));case e.EscapeStart:return 36===s||40===s?(i=s,t=e.Escape,null):(l.prepend(s),a=!1,t=r,o(u));case e.Escape:var d=i;i=0;var b=null;if(40===d&&66===s&&(b=e.ASCII),40===d&&74===s&&(b=e.Roman),40===d&&73===s&&(b=e.Katakana),36!==d||64!==s&&66!==s||(b=e.LeadByte),null!==b){t=t=b;var v=a;return a=!0,v?o(u):null}return l.prepend([d,s]),a=!1,t=r,o(u)}}}function O(l){var e=(l.fatal,{ASCII:0,Roman:1,jis0208:2}),t=e.ASCII;this.handler=function(l,r){if(r===F&&t!==e.ASCII)return l.prepend(r),[27,40,66];if(r===F&&t===e.ASCII)return K;if(t===e.ASCII&&n(r,0,127))return r;if(t===e.Roman&&n(r,0,127)&&92!==r&&126!==r){if(n(r,0,127))return r;if(165===r)return 92;if(8254===r)return 126}if(n(r,0,127)&&t!==e.ASCII)return l.prepend(r),t=e.ASCII,[27,40,66];if((165===r||8254===r)&&t!==e.Roman)return l.prepend(r),t=e.Roman,[27,40,74];8226===r&&(r=65293);var i=d(r,p("jis0208"));if(null===i)return a(r);if(t!==e.jis0208)return l.prepend(r),t=e.jis0208,[27,36,66];var o=u(i,94)+33,s=i%94+33;return[o,s]}}function C(l){var u=l.fatal,e=0;this.handler=function(l,t){if(t===F&&0!==e)return e=0,o(u);if(t===F&&0===e)return K;if(0!==e){var r=e,i=null;e=0;var a=t<127?64:65,s=r<160?129:193;(n(t,64,126)||n(t,128,252))&&(i=188*(r-s)+t-a);var f=null===i?null:h(i,p("jis0208"));return null===f&&null!==i&&n(i,8836,10528)?57344+i-8836:(null===f&&n(t,0,127)&&l.prepend(t),null===f?o(u):f)}return n(t,0,128)?t:n(t,161,223)?65377+t-161:n(t,129,159)||n(t,224,252)?(e=t,null):o(u)}}function P(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,128))return e;if(165===e)return 92;if(8254===e)return 126;if(n(e,65377,65439))return e-65377+161;8226===e&&(e=65293);var t=y(e);if(null===t)return a(e);var r=u(t,188),i=r<31?129:193,o=t%188,s=o<63?64:65;return[r+i,o+s]}}function U(l){var u=l.fatal,e=0;this.handler=function(l,t){if(t===F&&0!==e)return e=0,o(u);if(t===F&&0===e)return K;if(0!==e){var r=e,i=null;e=0,n(t,65,254)&&(i=190*(r-129)+(t-65));var a=null===i?null:h(i,p("euc-kr"));return null===i&&n(t,0,127)&&l.prepend(t),null===a?o(u):a}return n(t,0,127)?t:n(t,129,254)?(e=t,null):o(u)}}function T(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,127))return e;var t=d(e,p("euc-kr"));if(null===t)return a(e);var r=u(t,190)+129,i=t%190+65;return[r,i]}}function L(l,n){var u=l>>8,e=255&l;return n?[u,e]:[e,u]}function N(l,u){var e=u.fatal,t=null,r=null;this.handler=function(u,i){if(i===F&&(null!==t||null!==r))return o(e);if(i===F&&null===t&&null===r)return K;if(null===t)return t=i,null;var a;if(a=l?(t<<8)+i:(i<<8)+t,t=null,null!==r){var s=r;return r=null,n(a,56320,57343)?65536+1024*(s-55296)+(a-56320):(u.prepend(L(a,l)),o(e))}return n(a,55296,56319)?(r=a,null):n(a,56320,57343)?o(e):a}}function D(l,u){u.fatal;this.handler=function(u,e){if(e===F)return K;if(n(e,0,65535))return L(e,l);var t=L((e-65536>>10)+55296,l),r=L((e-65536&1023)+56320,l);return t.concat(r)}}function q(l){l.fatal;this.handler=function(l,u){return u===F?K:n(u,0,127)?u:63360+u-128}}function z(l){l.fatal;this.handler=function(l,u){return u===F?K:n(u,0,127)?u:n(u,63360,63487)?u-63360+128:a(u)}}var F=-1;i.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():F},prepend:function(l){if(Array.isArray(l))for(var n=l;n.length;)this.tokens.unshift(n.pop());else this.tokens.unshift(l)},push:function(l){if(Array.isArray(l))for(var n=l;n.length;)this.tokens.push(n.shift());else this.tokens.push(l)}};var K=-1;s.prototype={handler:function(l,n){}},f.prototype={handler:function(l,n){}};var H=[{encodings:[{labels:["unicode-1-1-utf-8","utf-8","utf8"],name:"utf-8"}],heading:"The Encoding"},{encodings:[{labels:["866","cp866","csibm866","ibm866"],name:"ibm866"},{labels:["csisolatin2","iso-8859-2","iso-ir-101","iso8859-2","iso88592","iso_8859-2","iso_8859-2:1987","l2","latin2"],name:"iso-8859-2"},{labels:["csisolatin3","iso-8859-3","iso-ir-109","iso8859-3","iso88593","iso_8859-3","iso_8859-3:1988","l3","latin3"],name:"iso-8859-3"},{labels:["csisolatin4","iso-8859-4","iso-ir-110","iso8859-4","iso88594","iso_8859-4","iso_8859-4:1988","l4","latin4"],name:"iso-8859-4"},{labels:["csisolatincyrillic","cyrillic","iso-8859-5","iso-ir-144","iso8859-5","iso88595","iso_8859-5","iso_8859-5:1988"],name:"iso-8859-5"},{labels:["arabic","asmo-708","csiso88596e","csiso88596i","csisolatinarabic","ecma-114","iso-8859-6","iso-8859-6-e","iso-8859-6-i","iso-ir-127","iso8859-6","iso88596","iso_8859-6","iso_8859-6:1987"],name:"iso-8859-6"},{labels:["csisolatingreek","ecma-118","elot_928","greek","greek8","iso-8859-7","iso-ir-126","iso8859-7","iso88597","iso_8859-7","iso_8859-7:1987","sun_eu_greek"],name:"iso-8859-7"},{labels:["csiso88598e","csisolatinhebrew","hebrew","iso-8859-8","iso-8859-8-e","iso-ir-138","iso8859-8","iso88598","iso_8859-8","iso_8859-8:1988","visual"],name:"iso-8859-8"},{labels:["csiso88598i","iso-8859-8-i","logical"],name:"iso-8859-8-i"},{labels:["csisolatin6","iso-8859-10","iso-ir-157","iso8859-10","iso885910","l6","latin6"],name:"iso-8859-10"},{labels:["iso-8859-13","iso8859-13","iso885913"],name:"iso-8859-13"},{labels:["iso-8859-14","iso8859-14","iso885914"],name:"iso-8859-14"},{labels:["csisolatin9","iso-8859-15","iso8859-15","iso885915","iso_8859-15","l9"],name:"iso-8859-15"},{labels:["iso-8859-16"],name:"iso-8859-16"},{labels:["cskoi8r","koi","koi8","koi8-r","koi8_r"],name:"koi8-r"},{labels:["koi8-ru","koi8-u"],name:"koi8-u"},{labels:["csmacintosh","mac","macintosh","x-mac-roman"],name:"macintosh"},{labels:["dos-874","iso-8859-11","iso8859-11","iso885911","tis-620","windows-874"],name:"windows-874"},{labels:["cp1250","windows-1250","x-cp1250"],name:"windows-1250"},{labels:["cp1251","windows-1251","x-cp1251"],name:"windows-1251"},{labels:["ansi_x3.4-1968","ascii","cp1252","cp819","csisolatin1","ibm819","iso-8859-1","iso-ir-100","iso8859-1","iso88591","iso_8859-1","iso_8859-1:1987","l1","latin1","us-ascii","windows-1252","x-cp1252"],name:"windows-1252"},{labels:["cp1253","windows-1253","x-cp1253"],name:"windows-1253"},{labels:["cp1254","csisolatin5","iso-8859-9","iso-ir-148","iso8859-9","iso88599","iso_8859-9","iso_8859-9:1989","l5","latin5","windows-1254","x-cp1254"],name:"windows-1254"},{labels:["cp1255","windows-1255","x-cp1255"],name:"windows-1255"},{labels:["cp1256","windows-1256","x-cp1256"],name:"windows-1256"},{labels:["cp1257","windows-1257","x-cp1257"],name:"windows-1257"},{labels:["cp1258","windows-1258","x-cp1258"],name:"windows-1258"},{labels:["x-mac-cyrillic","x-mac-ukrainian"],name:"x-mac-cyrillic"}],heading:"Legacy single-byte encodings"},{encodings:[{labels:["chinese","csgb2312","csiso58gb231280","gb2312","gb_2312","gb_2312-80","gbk","iso-ir-58","x-gbk"],name:"gbk"},{labels:["gb18030"],name:"gb18030"}],heading:"Legacy multi-byte Chinese (simplified) encodings"},{encodings:[{labels:["big5","big5-hkscs","cn-big5","csbig5","x-x-big5"],name:"big5"}],heading:"Legacy multi-byte Chinese (traditional) encodings"},{encodings:[{labels:["cseucpkdfmtjapanese","euc-jp","x-euc-jp"],name:"euc-jp"},{labels:["csiso2022jp","iso-2022-jp"],name:"iso-2022-jp"},{labels:["csshiftjis","ms932","ms_kanji","shift-jis","shift_jis","sjis","windows-31j","x-sjis"],name:"shift_jis"}],heading:"Legacy multi-byte Japanese encodings"},{encodings:[{labels:["cseuckr","csksc56011987","euc-kr","iso-ir-149","korean","ks_c_5601-1987","ks_c_5601-1989","ksc5601","ksc_5601","windows-949"],name:"euc-kr"}],heading:"Legacy multi-byte Korean encodings"},{encodings:[{labels:["csiso2022kr","hz-gb-2312","iso-2022-cn","iso-2022-cn-ext","iso-2022-kr"],name:"replacement"},{labels:["utf-16be"],name:"utf-16be"},{labels:["utf-16","utf-16le"],name:"utf-16le"},{labels:["x-user-defined"],name:"x-user-defined"}],heading:"Legacy miscellaneous encodings"}],V={};H.forEach(function(l){l.encodings.forEach(function(l){l.labels.forEach(function(n){V[n]=l})})});var Y={},W={},X="utf-8";m.prototype={decode:function(l,n){var u;u="object"==typeof l&&l instanceof ArrayBuffer?new Uint8Array(l):"object"==typeof l&&"buffer"in l&&l.buffer instanceof ArrayBuffer?new Uint8Array(l.buffer,l.byteOffset,l.byteLength):new Uint8Array(0),n=e(n),this._streaming||(this._decoder=W[this._encoding.name]({fatal:this._fatal}),this._BOMseen=!1),this._streaming=Boolean(n.stream);for(var t,o=new i(u),a=[];!o.endOfStream()&&(t=this._decoder.handler(o,o.read()),t!==K);)null!==t&&(Array.isArray(t)?a.push.apply(a,t):a.push(t));if(!this._streaming){do{if(t=this._decoder.handler(o,o.read()),t===K)break;null!==t&&(Array.isArray(t)?a.push.apply(a,t):a.push(t))}while(!o.endOfStream());this._decoder=null}return a.length&&(["utf-8","utf-16le","utf-16be"].indexOf(this.encoding)===-1||this._ignoreBOM||this._BOMseen||(65279===a[0]?(this._BOMseen=!0, -a.shift()):this._BOMseen=!0)),r(a)}},_.prototype={encode:function(l,n){l=l?String(l):"",n=e(n),this._streaming||(this._encoder=Y[this._encoding.name](this._options)),this._streaming=Boolean(n.stream);for(var u,r=[],o=new i(t(l));!o.endOfStream()&&(u=this._encoder.handler(o,o.read()),u!==K);)Array.isArray(u)?r.push.apply(r,u):r.push(u);if(!this._streaming){for(;;){if(u=this._encoder.handler(o,o.read()),u===K)break;Array.isArray(u)?r.push.apply(r,u):r.push(u)}this._encoder=null}return new Uint8Array(r)}},Y["utf-8"]=function(l){return new k(l)},W["utf-8"]=function(l){return new w(l)},function(){"encoding-indexes"in l&&H.forEach(function(l){"Legacy single-byte encodings"===l.heading&&l.encodings.forEach(function(l){var n=l.name,u=p(n);W[n]=function(l){return new S(u,l)},Y[n]=function(l){return new E(u,l)}})})}(),W.gbk=function(l){return new M(l)},Y.gbk=function(l){return new I(l,(!0))},Y.gb18030=function(l){return new I(l)},W.gb18030=function(l){return new M(l)},Y.big5=function(l){return new x(l)},W.big5=function(l){return new A(l)},Y["euc-jp"]=function(l){return new j(l)},W["euc-jp"]=function(l){return new B(l)},Y["iso-2022-jp"]=function(l){return new O(l)},W["iso-2022-jp"]=function(l){return new R(l)},Y.shift_jis=function(l){return new P(l)},W.shift_jis=function(l){return new C(l)},Y["euc-kr"]=function(l){return new T(l)},W["euc-kr"]=function(l){return new U(l)},Y["utf-16be"]=function(l){return new D((!0),l)},W["utf-16be"]=function(l){return new N((!0),l)},Y["utf-16le"]=function(l){return new D((!1),l)},W["utf-16le"]=function(l){return new N((!1),l)},Y["x-user-defined"]=function(l){return new z(l)},W["x-user-defined"]=function(l){return new q(l)},l.TextEncoder||(l.TextEncoder=_),l.TextDecoder||(l.TextDecoder=m)}(this)},{"./encoding-indexes.js":138}],140:[function(l,n,u){"use strict";function e(l){if(l&&l.__esModule)return l;var n={};if(null!=l)for(var u in l)Object.prototype.hasOwnProperty.call(l,u)&&(n[u]=l[u]);return n["default"]=l,n}Object.defineProperty(u,"__esModule",{value:!0});var t=l("./v1/index"),r=e(t);u["default"]={v1:r},n.exports=u["default"]},{"./v1/index":144}],141:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function, not "+typeof n);l.prototype=Object.create(n&&n.prototype,{constructor:{value:l,enumerable:!1,writable:!0,configurable:!0}}),n&&(Object.setPrototypeOf?Object.setPrototypeOf(l,n):l.__proto__=n)}function r(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function i(l,n){var u=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];return new v(l,g,n,u)}Object.defineProperty(u,"__esModule",{value:!0});var o=function(l,n,u){for(var e=!0;e;){var t=l,r=n,i=u;e=!1,null===t&&(t=Function.prototype);var o=Object.getOwnPropertyDescriptor(t,r);if(void 0!==o){if("value"in o)return o.value;var a=o.get;if(void 0===a)return;return a.call(i)}var s=Object.getPrototypeOf(t);if(null===s)return;l=s,n=r,u=i,e=!0,o=s=void 0}},a=function(){function l(l,n){for(var u=0;u0){l+=" {";for(var n=0;n0&&(l+=","),l+=u[n]+":"+JSON.stringify(this.properties[u[n]]);l+="}"}return l+=")"}}]),l}(),i=function(){function l(n,u,t,r,i){e(this,l),this.identity=n,this.start=u,this.end=t,this.type=r,this.properties=i}return t(l,[{key:"toString",value:function(){var l="("+this.start+")-[:"+this.type,n=Object.keys(this.properties);if(n.length>0){l+=" {";for(var u=0;u0&&(l+=","),l+=n[u]+":"+JSON.stringify(this.properties[n[u]]);l+="}"}return l+="]->("+this.end+")"}}]),l}(),o=function(){function l(n,u,t){e(this,l),this.identity=n,this.type=u,this.properties=t}return t(l,[{key:"bind",value:function(l,n){return new i(this.identity,l,n,this.type,this.properties)}},{key:"toString",value:function(){var l="-[:"+this.type,n=Object.keys(this.properties);if(n.length>0){l+=" {";for(var u=0;u0&&(l+=","),l+=n[u]+":"+JSON.stringify(this.properties[n[u]]);l+="}"}return l+="]->"}}]),l}(),a=function f(l,n,u){e(this,f),this.start=l,this.relationship=n,this.end=u},s=function c(l,n,u){e(this,c),this.start=l,this.end=n,this.segments=u,this.length=u.length};u["default"]={Node:r,Relationship:i,UnboundRelationship:o,Path:s,PathSegment:a},n.exports=u["default"]},{}],144:[function(l,n,u){"use strict";Object.defineProperty(u,"__esModule",{value:!0});var e=l("./integer"),t=l("./driver"),r=l("./graph-types"),i=l("./error");u["default"]={driver:t.driver,"int":e["int"],isInt:e.isInt,Neo4jError:i.Neo4jError,auth:{basic:function(l,n){return{scheme:"basic",principal:l,credentials:n}}},types:{Node:r.Node,Relationship:r.Relationship,UnboundRelationship:r.UnboundRelationship,PathSegment:r.PathSegment,Path:r.Path}},n.exports=u["default"]},{"./driver":141,"./error":142,"./graph-types":143,"./integer":145}],145:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u>>0)}},{key:"toString",value:function(n){if(n=n||10,n<2||36>>0,s=a.toString(n);if(u=o,u.isZero())return s+i;for(;s.length<6;)s="0"+s;i=""+s+i}}},{key:"getHighBits",value:function(){return this.high}},{key:"getLowBits",value:function(){return this.low}},{key:"getNumBitsAbs",value:function(){if(this.isNegative())return this.equals(l.MIN_VALUE)?64:this.negate().getNumBitsAbs();for(var n=0!=this.high?this.high:this.low,u=31;u>0&&0==(n&1<=0}},{key:"isOdd",value:function(){return 1===(1&this.low)}},{key:"isEven",value:function(){return 0===(1&this.low)}},{key:"equals",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.high===n.high&&this.low===n.low}},{key:"notEquals",value:function(l){!this.equals(l)}},{key:"lessThan",value:function(l){return this.compare(l)<0}},{key:"lessThanOrEqual",value:function(l){return this.compare(l)<=0}},{key:"greaterThan",value:function(l){return this.compare(l)>0}},{key:"greaterThanOrEqual",value:function(l){return this.compare(l)>=0}},{key:"compare",value:function(n){if(l.isInteger(n)||(n=l.fromValue(n)),this.equals(n))return 0;var u=this.isNegative(),e=n.isNegative();return u&&!e?-1:!u&&e?1:this.subtract(n).isNegative()?-1:1}},{key:"negate",value:function(){return this.equals(l.MIN_VALUE)?l.MIN_VALUE:this.not().add(l.ONE)}},{key:"add",value:function(n){l.isInteger(n)||(n=l.fromValue(n));var u=this.high>>>16,e=65535&this.high,t=this.low>>>16,r=65535&this.low,i=n.high>>>16,o=65535&n.high,a=n.low>>>16,s=65535&n.low,f=0,c=0,h=0,d=0;return d+=r+s,h+=d>>>16,d&=65535,h+=t+a,c+=h>>>16,h&=65535,c+=e+o,f+=c>>>16,c&=65535,f+=u+i,f&=65535,l.fromBits(h<<16|d,f<<16|c)}},{key:"subtract",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.add(n.negate())}},{key:"multiply",value:function(n){if(this.isZero())return l.ZERO;if(l.isInteger(n)||(n=l.fromValue(n)),n.isZero())return l.ZERO;if(this.equals(l.MIN_VALUE))return n.isOdd()?l.MIN_VALUE:l.ZERO;if(n.equals(l.MIN_VALUE))return this.isOdd()?l.MIN_VALUE:l.ZERO;if(this.isNegative())return n.isNegative()?this.negate().multiply(n.negate()):this.negate().multiply(n).negate();if(n.isNegative())return this.multiply(n.negate()).negate();if(this.lessThan(h)&&n.lessThan(h))return l.fromNumber(this.toNumber()*n.toNumber());var u=this.high>>>16,e=65535&this.high,t=this.low>>>16,r=65535&this.low,i=n.high>>>16,o=65535&n.high,a=n.low>>>16,s=65535&n.low,f=0,c=0,d=0,p=0;return p+=r*s,d+=p>>>16,p&=65535,d+=t*s,c+=d>>>16,d&=65535,d+=r*a,c+=d>>>16,d&=65535,c+=e*s,f+=c>>>16,c&=65535,c+=t*a,f+=c>>>16,c&=65535,c+=r*o,f+=c>>>16,c&=65535,f+=u*s+e*a+t*o+r*i,f&=65535,l.fromBits(d<<16|p,f<<16|c)}},{key:"div",value:function(n){if(l.isInteger(n)||(n=l.fromValue(n)),n.isZero())throw(0,r.newError)("division by zero");if(this.isZero())return l.ZERO;var u,e,t;if(this.equals(l.MIN_VALUE)){if(n.equals(l.ONE)||n.equals(l.NEG_ONE))return l.MIN_VALUE;if(n.equals(l.MIN_VALUE))return l.ONE;var i=this.shiftRight(1);return u=i.div(n).shiftLeft(1),u.equals(l.ZERO)?n.isNegative()?l.ONE:l.NEG_ONE:(e=this.subtract(n.multiply(u)),t=u.add(e.div(n)))}if(n.equals(l.MIN_VALUE))return l.ZERO;if(this.isNegative())return n.isNegative()?this.negate().div(n.negate()):this.negate().div(n).negate();if(n.isNegative())return this.div(n.negate()).negate();for(t=l.ZERO,e=this;e.greaterThanOrEqual(n);){u=Math.max(1,Math.floor(e.toNumber()/n.toNumber()));for(var o=Math.ceil(Math.log(u)/Math.LN2),a=o<=48?1:Math.pow(2,o-48),s=l.fromNumber(u),f=s.multiply(n);f.isNegative()||f.greaterThan(e);)u-=a,s=l.fromNumber(u),f=s.multiply(n);s.isZero()&&(s=l.ONE),t=t.add(s),e=e.subtract(f)}return t}},{key:"modulo",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.subtract(this.div(n).multiply(n))}},{key:"not",value:function(){return l.fromBits(~this.low,~this.high)}},{key:"and",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low&n.low,this.high&n.high)}},{key:"or",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low|n.low,this.high|n.high)}},{key:"xor",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low^n.low,this.high^n.high)}},{key:"shiftLeft",value:function(n){return l.isInteger(n)&&(n=n.toInt()),0===(n&=63)?this:n<32?l.fromBits(this.low<>>32-n):l.fromBits(0,this.low<>>n|this.high<<32-n,this.high>>n):l.fromBits(this.high>>n-32,this.high>=0?0:-1)}}]),l}();i.__isInteger__,Object.defineProperty(i.prototype,"__isInteger__",{value:!0,enumerable:!1,configurable:!1}),i.isInteger=function(l){return(l&&l.__isInteger__)===!0};var o={};i.fromInt=function(l){var n,u;return l=0|l,-128<=l&&l<128&&(u=o[l])?u:(n=new i(l,l<0?-1:0,(!1)),-128<=l&&l<128&&(o[l]=n),n)},i.fromNumber=function(l){return isNaN(l)||!isFinite(l)?i.ZERO:l<=-c?i.MIN_VALUE:l+1>=c?i.MAX_VALUE:l<0?i.fromNumber(-l).negate():new i(l%s|0,l/s|0)},i.fromBits=function(l,n){return new i(l,n)},i.fromString=function(l,n){if(0===l.length)throw(0,r.newError)("number format error: empty string");if("NaN"===l||"Infinity"===l||"+Infinity"===l||"-Infinity"===l)return i.ZERO;if(n=n||10,n<2||360)throw(0,r.newError)('number format error: interior "-" character: '+l);if(0===u)return i.fromString(l.substring(1),n).negate();for(var e=i.fromNumber(Math.pow(n,8)),t=i.ZERO,o=0;o>8),this.putUInt8(l+1,255&n)}},{key:"putUInt16",value:function(l,n){this.putUInt8(l,n>>8&255),this.putUInt8(l+1,255&n)}},{key:"putInt32",value:function(l,n){this.putInt8(l,n>>24),this.putUInt8(l+1,n>>16&255),this.putUInt8(l+2,n>>8&255),this.putUInt8(l+3,255&n)}},{key:"putUInt32",value:function(l,n){this.putUInt8(l,n>>24&255),this.putUInt8(l+1,n>>16&255),this.putUInt8(l+2,n>>8&255),this.putUInt8(l+3,255&n)}},{key:"putInt64",value:function(l,n){this.putInt8(l,n>>48),this.putUInt8(l+1,n>>42&255),this.putUInt8(l+2,n>>36&255),this.putUInt8(l+3,n>>30&255),this.putUInt8(l+4,n>>24&255),this.putUInt8(l+5,n>>16&255),this.putUInt8(l+6,n>>8&255),this.putUInt8(l+7,255&n)}},{key:"putBytes",value:function(l,n){for(var u=0,e=n.remaining();u0}},{key:"reset",value:function(){this.position=0}},{key:"toString",value:function(){return this.constructor.name+"( position="+this.position+" )\n "+this.toHex()}},{key:"toHex",value:function(){for(var l="",n=0;n=u.length))return u.getUInt8(l);l-=u.length}}},{key:"getInt8",value:function(l){for(var n=0;n=u.length))return u.getInt8(l);l-=u.length}}},{key:"getFloat64",value:function(l){for(var n=r(8),u=0;u<8;u++)n.putUInt8(u,this.getUInt8(l+u));return n.getFloat64(0)}}]),n}(f),p=function(l){function n(l){t(this,n);var u=l instanceof s.Buffer?l:new s.Buffer(l);i(Object.getPrototypeOf(n.prototype),"constructor",this).call(this,u.length),this._buffer=u}return e(n,l),o(n,[{key:"getUInt8",value:function(l){return this._buffer.readUInt8(l)}},{key:"getInt8",value:function(l){return this._buffer.readInt8(l)}},{key:"getFloat64",value:function(l){return this._buffer.readDoubleBE(l)}},{key:"putUInt8",value:function(l,n){this._buffer.writeUInt8(n,l)}},{key:"putInt8",value:function(l,n){this._buffer.writeInt8(n,l)}},{key:"putFloat64",value:function(l,n){this._buffer.writeDoubleBE(n,l)}},{key:"putBytes",value:function(l,u){if(!(u instanceof n))throw(0,a.newError)("Copying not yet implemented.");var e=Math.min(u.length-u.position,this.length-l);u._buffer.copy(this._buffer,l,u.position,u.position+e),u.position+=e}},{key:"getSlice",value:function(l,u){return new n(this._buffer.slice(l,l+u))}}]),n}(f),b=c;try{l.resolve("buffer"),b=p}catch(v){}u["default"]={BaseBuffer:f,HeapBuffer:c,SliceBuffer:h,CombinedBuffer:d,NodeBuffer:p,alloc:r},n.exports=u["default"]},{"./../error":142,buffer:46}],147:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function r(){var n=l,u=n("process");return u.env["win32"==u.platform?"USERPROFILE":"HOME"]}function i(n,u,e){if(!b["default"].existsSync(u))return void e(null);var t=!1;l("readline").createInterface({input:b["default"].createReadStream(u)}).on("line",function(l){l.startsWith(n)&&(t=!0,e(l.split(" ")[1]))}).on("close",function(){t||e(null)})}function o(l,n,u){b["default"].appendFile(n,l+" "+u+g.EOL,"utf8",function(l){l&&console.log(l)})}function a(l,n){var u=arguments.length<=2||void 0===arguments[2]?function(){return null}:arguments[2];if(l.encrypted===!1){var e=c["default"].connect(l.port,l.host,n);return e.on("error",u),e}return k[l.trust]?k[l.trust](l,n,u):void u((0,_.newError)("Unknown trust strategy: "+l.trust+". Please use either trust:'TRUST_SIGNED_CERTIFICATES' or trust:'TRUST_ON_FIRST_USE' in your driver configuration. Alternatively, you can disable encryption by setting `encrypted:false`. There is no mechanism to use encryption without trust verification, because this incurs the overhead of encryption without improving security. If the driver does not verify that the peer it is connected to is really Neo4j, it is very easy for an attacker to bypass the encryption by pretending to be Neo4j."))}Object.defineProperty(u,"__esModule",{value:!0});var s=function(){function l(l,n){for(var u=0;u0;)this._ensure(1),this._buffer.remaining()>n.remaining()?this._buffer.writeBytes(n):this._buffer.writeBytes(n.readSlice(this._buffer.remaining()));return this}},{key:"flush",value:function(){if(this._buffer.position>0){this._closeChunkIfOpen();var l=this._buffer;this._buffer=null,this._ch.write(l.getSlice(0,l.position)),this._buffer=s["default"].alloc(this._bufferSize),this._chunkOpen=!1}return this}},{key:"messageBoundary",value:function(){this._closeChunkIfOpen(),this._buffer.remaining()=2?this._onHeader(l.readUInt16()):(this._partialChunkHeader=l.readUInt8()<<8,this.IN_HEADER)}},{key:"IN_HEADER",value:function(l){return this._onHeader(65535&(this._partialChunkHeader|l.readUInt8()))}},{key:"IN_CHUNK",value:function(l){return this._chunkSize<=l.remaining()?(this._currentMessage.push(l.readSlice(this._chunkSize)),this.AWAITING_CHUNK):(this._chunkSize-=l.remaining(),this._currentMessage.push(l.readSlice(l.remaining())),this.IN_CHUNK)}},{key:"CLOSED",value:function(l){}},{key:"_onHeader",value:function(l){if(0==l){var n=void 0;return n=1==this._currentMessage.length?this._currentMessage[0]:new s["default"].CombinedBuffer(this._currentMessage),this._currentMessage=[],this.onmessage(n),this.AWAITING_CHUNK}return this._chunkSize=l,this.IN_CHUNK}},{key:"write",value:function(l){for(;l.hasRemaining();)this._state=this._state(l)}}]),l}();u["default"]={Chunker:d,Dechunker:p},n.exports=u["default"]},{"./buf":146}],150:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function r(l){return l.match(q)[2]}function i(l){return l.match(q)[3]}function o(){}function a(l){var n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],u=n.channel||E;return new K(new u({host:r(l),port:i(l)||7687,encrypted:null==n.encrypted?(0,y["default"])("trust_on_first_use"):n.encrypted,trust:n.trust||((0,y["default"])("trust_on_first_use")?"TRUST_ON_FIRST_USE":"TRUST_SIGNED_CERTIFICATES"),trustedCertificates:n.trustedCertificates||[],knownHosts:n.knownHosts}))}Object.defineProperty(u,"__esModule",{value:!0});var s=function(){function l(l,n){for(var u=0;u0?(f=e[a-1],f instanceof k["default"].UnboundRelationship&&(e[a-1]=f=f.bind(r.identity,s.identity))):(f=e[-a-1],f instanceof k["default"].UnboundRelationship&&(e[-a-1]=f=f.bind(s.identity,r.identity))),i.push(new k["default"].PathSegment(r,f,s)),r=s}return new k["default"].Path(u[0],u[u.length-1],i)}},K=function(){function l(n){t(this,l),this._pendingObservers=[],this._currentObserver=void 0,this._ch=n,this._dechunker=new b["default"].Dechunker,this._chunker=new b["default"].Chunker(n),this._packer=new m["default"].Packer(this._chunker),this._unpacker=new m["default"].Unpacker,this._isHandlingFailure=!1,this._isBroken=!1,this._unpacker.structMappers[U]=F.node,this._unpacker.structMappers[T]=F.rel,this._unpacker.structMappers[L]=F.unboundRel,this._unpacker.structMappers[N]=F.path;var u=this;this._ch.onmessage=function(l){var n=l.readInt32();1==n?(u._ch.onmessage=function(l){u._dechunker.write(l)},l.hasRemaining()&&u._dechunker.write(l.readSlice(l.remaining()))):1213486160==n?u._handleFatalError((0,S.newError)("Server responded HTTP. Make sure you are not trying to connect to the http endpoint (HTTP defaults to port 7474 whereas BOLT defaults to port 7687)")):u._handleFatalError((0,S.newError)("Unknown Bolt protocol version: "+n))},this._ch.onerror=this._handleFatalError.bind(this),this._ch._error&&this._handleFatalError(this._ch._error),this._dechunker.onmessage=function(l){u._handleMessage(u._unpacker.unpack(l))};var e=(0,_.alloc)(20);e.writeInt32(D),e.writeInt32(1),e.writeInt32(0),e.writeInt32(0),e.writeInt32(0),e.reset(),this._ch.write(e)}return s(l,[{key:"_handleFatalError",value:function(l){for(this._isBroken=!0,this._error=l,this._currentObserver&&this._currentObserver.onError&&this._currentObserver.onError(l);this._pendingObservers.length>0;){var n=this._pendingObservers.shift();n&&n.onError&&n.onError(l)}}},{key:"_handleMessage",value:function(l){var n=this;switch(l.signature){case O:this._currentObserver.onNext(l.fields[0]);break;case R:try{this._currentObserver.onCompleted(l.fields[0])}finally{this._currentObserver=this._pendingObservers.shift()}break;case P:try{this._currentObserver.onError(l),this._errorMsg=l}finally{this._currentObserver=this._pendingObservers.shift(),this._isHandlingFailure||!function(){n._isHandlingFailure=!0;var l=n;n._ackFailure({onNext:o,onError:o,onCompleted:function(){l._isHandlingFailure=!1}})}()}break;case C:try{this._errorMsg&&this._currentObserver.onError?this._currentObserver.onError(this._errorMsg):this._currentObserver.onError&&this._currentObserver.onError(l)}finally{this._currentObserver=this._pendingObservers.shift()}break;default:this._handleFatalError((0,S.newError)("Unknown Bolt protocol message: "+l))}}},{key:"initialize",value:function(l,n,u){this._queueObserver(u),this._packer.packStruct(M,[l,n]),this._chunker.messageBoundary()}},{key:"run",value:function(l,n,u){this._queueObserver(u),this._packer.packStruct(x,[l,n]),this._chunker.messageBoundary()}},{key:"pullAll",value:function(l){this._queueObserver(l),this._packer.packStruct(j),this._chunker.messageBoundary()}},{key:"discardAll",value:function(l){this._queueObserver(l),this._packer.packStruct(B),this._chunker.messageBoundary()}},{key:"reset",value:function(l){this._isHandlingFailure=!0;var n=this,u={onNext:l?l.onNext:o,onError:l?l.onError:o,onCompleted:function(){n._isHandlingFailure=!1,l&&l.onCompleted()}};this._queueObserver(u),this._packer.packStruct(A),this._chunker.messageBoundary()}},{key:"_ackFailure",value:function(l){this._queueObserver(l),this._packer.packStruct(I),this._chunker.messageBoundary()}},{key:"_queueObserver",value:function(l){return this._isBroken?void(l&&l.onError&&l.onError(this._error)):(l=l||z,l.onCompleted=l.onCompleted||o,l.onError=l.onError||o,l.onNext=l.onNext||o,void(void 0===this._currentObserver?this._currentObserver=l:this._pendingObservers.push(l)))}},{key:"sync",value:function(){this._chunker.flush()}},{key:"isOpen",value:function(){return!this._isBroken&&this._ch._open}},{key:"close",value:function(l){this._ch.close(l)}}]),l}();u["default"]={connect:a,Connection:K},n.exports=u["default"]},{"../graph-types":143,"../integer":145,"./../error":142,"./buf":146,"./ch-node":147,"./ch-websocket":148,"./chunking":149,"./features":151,"./packstream":153}],151:[function(l,n,u){"use strict";function e(l){return t[l]&&t[l]()}Object.defineProperty(u,"__esModule",{value:!0});var t={trust_on_first_use:function(){try{var n=l("tls").TLSSocket.prototype.getPeerCertificate;return n.length>=1}catch(u){return!1}}};u["default"]=e,n.exports=u["default"]},{tls:43}],152:[function(l,n,u){"use strict";Object.defineProperty(u,"__esModule",{value:!0}),u["default"]={debug:function(l){console.log(l)}},n.exports=u["default"]},{}],153:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var r=function(){function l(l,n){for(var u=0;u0&&(l+=", "),l+=this.fields[n];return"Structure("+this.signature+", ["+this.fields+"])"}}]),l}(),P=function(){function l(n){t(this,l),this._ch=n}return r(l,[{key:"pack",value:function(l){if(null===l)this._ch.writeUInt8(p);else if(l===!0)this._ch.writeUInt8(y);else if(l===!1)this._ch.writeUInt8(v);else if("number"==typeof l)this.packFloat(l);else if("string"==typeof l)this.packString(l);else if(l instanceof a.Integer)this.packInteger(l);else if(l instanceof Array){this.packListHeader(l.length);for(var n=0;n>0),this._ch.writeUInt8(u%256),this._ch.writeBytes(n);else{if(!(u<4294967296))throw(0,s.newError)("UTF-8 strings of size "+u+" are not supported");this._ch.writeUInt8(E),this._ch.writeUInt8((u/16777216>>0)%256),this._ch.writeUInt8((u/65536>>0)%256),this._ch.writeUInt8((u/256>>0)%256),this._ch.writeUInt8(u%256),this._ch.writeBytes(n)}}},{key:"packListHeader",value:function(l){if(l<16)this._ch.writeUInt8(c|l);else if(l<256)this._ch.writeUInt8(M),this._ch.writeUInt8(l);else if(l<65536)this._ch.writeUInt8(I),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256);else{if(!(l<4294967296))throw(0,s.newError)("Lists of size "+l+" are not supported");this._ch.writeUInt8(A),this._ch.writeUInt8((l/16777216>>0)%256),this._ch.writeUInt8((l/65536>>0)%256),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)}}},{key:"packMapHeader",value:function(l){if(l<16)this._ch.writeUInt8(h|l);else if(l<256)this._ch.writeUInt8(x),this._ch.writeUInt8(l);else if(l<65536)this._ch.writeUInt8(B),this._ch.writeUInt8(l/256>>0),this._ch.writeUInt8(l%256);else{if(!(l<4294967296))throw(0,s.newError)("Maps of size "+l+" are not supported");this._ch.writeUInt8(j),this._ch.writeUInt8((l/16777216>>0)%256),this._ch.writeUInt8((l/65536>>0)%256),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)}}},{key:"packStructHeader",value:function(l,n){if(l<16)this._ch.writeUInt8(d|l),this._ch.writeUInt8(n);else if(l<256)this._ch.writeUInt8(R),this._ch.writeUInt8(l),this._ch.writeUInt8(n);else{if(!(l<65536))throw(0,s.newError)("Structures of size "+l+" are not supported");this._ch.writeUInt8(O),this._ch.writeUInt8(l/256>>0),this._ch.writeUInt8(l%256)}}}]),l}(),U=function(){function l(){t(this,l),this.structMappers={}}return r(l,[{key:"unpackList",value:function(l,n){for(var u=[],e=0;e=0&&n<128)return(0,a["int"])(n);if(n>=240&&n<256)return(0,a["int"])(n-256);if(n==g)return(0,a["int"])(l.readInt8());if(n==m)return(0,a["int"])(l.readInt16());if(n==_){var u=l.readInt32();return(0,a["int"])(u)}if(n==w){var e=l.readInt32(),t=l.readInt32();return new a.Integer(t,e)}if(n==k)return o["default"].decode(l,l.readUInt8());if(n==S)return o["default"].decode(l,l.readUInt16());if(n==E)return o["default"].decode(l,l.readUInt32());if(n==M)return this.unpackList(l.readUInt8(),l);if(n==I)return this.unpackList(l.readUInt16(),l);if(n==A)return this.unpackList(l.readUInt32(),l);if(n==x)return this.unpackMap(l.readUInt8(),l);if(n==B)return this.unpackMap(l.readUInt16(),l);if(n==j)return this.unpackMap(l.readUInt32(),l);if(n==R)return this.unpackStruct(l.readUInt8(),l);if(n==O)return this.unpackStruct(l.readUInt16(),l);var r=240&n,i=15&n;if(128==r)return o["default"].decode(l,i);if(144==r)return this.unpackList(i,l);if(160==r)return this.unpackMap(i,l);if(176==r)return this.unpackStruct(i,l);throw(0,s.newError)("Unknown packed value with marker "+n.toString(16))}}]),l}();u["default"]={Packer:P,Unpacker:U,Structure:C},n.exports=u["default"]},{"../integer":145,"./../error":142,"./buf":146,"./log":152,"./utf8":156}],154:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0?this._pool.pop():this._create(this._release)}},{key:"_release",value:function(l){this._pool.length>=this._maxIdle||!this._validate(l)?this._destroy(l):this._pool.push(l)}}]),l}();u["default"]={Pool:r},n.exports=u["default"]},{}],155:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0){this._fieldKeys=l.fields;for(var n=0;n0)for(var n=0;n<_queuedRecords.length;n++)l.onNext(_queuedRecords[n]);this._tail&&l.onCompleted(this._tail),this._observer=l}}]),l}();u["default"]=i,n.exports=u["default"]},{"../record":157}],156:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(u,"__esModule",{value:!0});var t=l("./buf"),r=e(t),i=l("string_decoder"),o=l("./../error"),a={};try{!function(){l.resolve("buffer");var n=new i.StringDecoder("utf8"),u=l("buffer");a={encode:function(l){return new r["default"].NodeBuffer(new u.Buffer(l,"UTF-8"))},decode:function(l,u){if(l instanceof r["default"].NodeBuffer){var e=l.position,t=e+u;return l.position=Math.min(t,l.length),l._buffer.toString("utf8",e,t)}if(l instanceof r["default"].CombinedBuffer){var i=c(l,u,function(l){return n.write(l._buffer)},function(){return n.end()});return i}throw(0,o.newError)("Don't know how to decode strings from `"+l+"`.")}}}()}catch(s){var f;!function(){f=l("../../external/text-encoding/index");var n=new f.TextEncoder("utf-8"),u=new f.TextDecoder("utf-8");a={encode:function(l){return new r["default"].HeapBuffer(n.encode(l).buffer)},decode:function(l,n){if(l instanceof r["default"].HeapBuffer)return u.decode(l.readView(Math.min(n,l.length-l.position)));for(var e=r["default"].alloc(n),t=0;t=n.length)return r-=n.length,"";n._updatePos(r-n.position);var e=Math.min(n.length-r,t),i=n.readSlice(e);return n._updatePos(e),t=Math.max(t-i.length,0),r=0,l+u(i)},"");return i+e()};u["default"]=a,n.exports=u["default"]},{"../../external/text-encoding/index":137,"./../error":142,"./buf":146,buffer:46,string_decoder:133}],157:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function t(l){var n={};return l.forEach(function(l,u){n[l]=u}),n}Object.defineProperty(u,"__esModule",{value:!0});var r=function(){function l(l,n){for(var u=0;uthis._fields.length-1||n<0)throw(0,i.newError)("This record has no field with index '"+n+"'. Remember that indexes start at `0`, and make sure your statement returns records in the shape you meant it to.");return this._fields[n]}}]),l}();u.Record=o},{"./error":142}],158:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0}},{key:"nodesCreated",value:function(){return this._stats.nodesCreated}},{key:"nodesDeleted",value:function(){return this._stats.nodesDeleted}},{key:"relationshipsCreated",value:function(){return this._stats.relationshipsCreated}},{key:"relationshipsDeleted",value:function(){return this._stats.relationshipsDeleted}},{key:"propertiesSet",value:function(){return this._stats.propertiesSet}},{key:"labelsAdded",value:function(){return this._stats.labelsAdded}},{key:"labelsRemoved",value:function(){return this._stats.labelsRemoved}},{key:"indexesAdded",value:function(){return this._stats.indexesAdded}},{key:"indexesRemoved",value:function(){return this._stats.indexesRemoved}},{key:"constraintsAdded",value:function(){return this._stats.constraintsAdded}},{key:"constraintsRemoved",value:function(){return this._stats.constraintsRemoved}}]),l}(),f=function(){function l(n){e(this,l),this.code=n.code,this.title=n.title,this.description=n.description,this.severity=n.severity,this.position=l._constructPosition(n.position)}return t(l,null,[{key:"_constructPosition",value:function(l){return l?{offset:l.offset.toInt(),line:l.line.toInt(),column:l.column.toInt()}:{}}}]),l}(),c={READ_ONLY:"r",READ_WRITE:"rw",WRITE_ONLY:"w",SCHEMA_WRITE:"s"};u["default"]={ResultSummary:i,statementType:c},n.exports=u["default"]},{"./integer":145}],159:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0){l+=" {";for(var n=0;n0&&(l+=","),l+=u[n]+":"+JSON.stringify(this.properties[u[n]]);l+="}"}return l+=")"}}]),l}(),i=function(){function l(n,u,t,r,i){e(this,l),this.identity=n,this.start=u,this.end=t,this.type=r,this.properties=i}return t(l,[{key:"toString",value:function(){var l="("+this.start+")-[:"+this.type,n=Object.keys(this.properties);if(n.length>0){l+=" {";for(var u=0;u0&&(l+=","),l+=n[u]+":"+JSON.stringify(this.properties[n[u]]);l+="}"}return l+="]->("+this.end+")"}}]),l}(),o=function(){function l(n,u,t){e(this,l),this.identity=n,this.type=u,this.properties=t}return t(l,[{key:"bind",value:function(l,n){return new i(this.identity,l,n,this.type,this.properties)}},{key:"toString",value:function(){var l="-[:"+this.type,n=Object.keys(this.properties);if(n.length>0){l+=" {";for(var u=0;u0&&(l+=","),l+=n[u]+":"+JSON.stringify(this.properties[n[u]]);l+="}"}return l+="]->"}}]),l}(),a=function f(l,n,u){e(this,f),this.start=l,this.relationship=n,this.end=u},s=function c(l,n,u){e(this,c),this.start=l,this.end=n,this.segments=u,this.length=u.length};u["default"]={Node:r,Relationship:i,UnboundRelationship:o,Path:s,PathSegment:a},n.exports=u["default"]},{}],144:[function(l,n,u){"use strict";Object.defineProperty(u,"__esModule",{value:!0});var e=l("./integer"),t=l("./driver"),r=l("./graph-types"),i=l("./error");u["default"]={driver:t.driver,"int":e["int"],isInt:e.isInt,Neo4jError:i.Neo4jError,auth:{basic:function(l,n){return{scheme:"basic",principal:l,credentials:n}}},types:{Node:r.Node,Relationship:r.Relationship,UnboundRelationship:r.UnboundRelationship,PathSegment:r.PathSegment,Path:r.Path}},n.exports=u["default"]},{"./driver":141,"./error":142,"./graph-types":143,"./integer":145}],145:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u>>0)}},{key:"toString",value:function(n){if(n=n||10,n<2||36>>0,s=a.toString(n);if(u=o,u.isZero())return s+i;for(;s.length<6;)s="0"+s;i=""+s+i}}},{key:"getHighBits",value:function(){return this.high}},{key:"getLowBits",value:function(){return this.low}},{key:"getNumBitsAbs",value:function(){if(this.isNegative())return this.equals(l.MIN_VALUE)?64:this.negate().getNumBitsAbs();for(var n=0!=this.high?this.high:this.low,u=31;u>0&&0==(n&1<=0}},{key:"isOdd",value:function(){return 1===(1&this.low)}},{key:"isEven",value:function(){return 0===(1&this.low)}},{key:"equals",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.high===n.high&&this.low===n.low}},{key:"notEquals",value:function(l){!this.equals(l)}},{key:"lessThan",value:function(l){return this.compare(l)<0}},{key:"lessThanOrEqual",value:function(l){return this.compare(l)<=0}},{key:"greaterThan",value:function(l){return this.compare(l)>0}},{key:"greaterThanOrEqual",value:function(l){return this.compare(l)>=0}},{key:"compare",value:function(n){if(l.isInteger(n)||(n=l.fromValue(n)),this.equals(n))return 0;var u=this.isNegative(),e=n.isNegative();return u&&!e?-1:!u&&e?1:this.subtract(n).isNegative()?-1:1}},{key:"negate",value:function(){return this.equals(l.MIN_VALUE)?l.MIN_VALUE:this.not().add(l.ONE)}},{key:"add",value:function(n){l.isInteger(n)||(n=l.fromValue(n));var u=this.high>>>16,e=65535&this.high,t=this.low>>>16,r=65535&this.low,i=n.high>>>16,o=65535&n.high,a=n.low>>>16,s=65535&n.low,f=0,c=0,h=0,d=0;return d+=r+s,h+=d>>>16,d&=65535,h+=t+a,c+=h>>>16,h&=65535,c+=e+o,f+=c>>>16,c&=65535,f+=u+i,f&=65535,l.fromBits(h<<16|d,f<<16|c)}},{key:"subtract",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.add(n.negate())}},{key:"multiply",value:function(n){if(this.isZero())return l.ZERO;if(l.isInteger(n)||(n=l.fromValue(n)),n.isZero())return l.ZERO;if(this.equals(l.MIN_VALUE))return n.isOdd()?l.MIN_VALUE:l.ZERO;if(n.equals(l.MIN_VALUE))return this.isOdd()?l.MIN_VALUE:l.ZERO;if(this.isNegative())return n.isNegative()?this.negate().multiply(n.negate()):this.negate().multiply(n).negate();if(n.isNegative())return this.multiply(n.negate()).negate();if(this.lessThan(h)&&n.lessThan(h))return l.fromNumber(this.toNumber()*n.toNumber());var u=this.high>>>16,e=65535&this.high,t=this.low>>>16,r=65535&this.low,i=n.high>>>16,o=65535&n.high,a=n.low>>>16,s=65535&n.low,f=0,c=0,d=0,p=0;return p+=r*s,d+=p>>>16,p&=65535,d+=t*s,c+=d>>>16,d&=65535,d+=r*a,c+=d>>>16,d&=65535,c+=e*s,f+=c>>>16,c&=65535,c+=t*a,f+=c>>>16,c&=65535,c+=r*o,f+=c>>>16,c&=65535,f+=u*s+e*a+t*o+r*i,f&=65535,l.fromBits(d<<16|p,f<<16|c)}},{key:"div",value:function(n){if(l.isInteger(n)||(n=l.fromValue(n)),n.isZero())throw(0,r.newError)("division by zero");if(this.isZero())return l.ZERO;var u,e,t;if(this.equals(l.MIN_VALUE)){if(n.equals(l.ONE)||n.equals(l.NEG_ONE))return l.MIN_VALUE;if(n.equals(l.MIN_VALUE))return l.ONE;var i=this.shiftRight(1);return u=i.div(n).shiftLeft(1),u.equals(l.ZERO)?n.isNegative()?l.ONE:l.NEG_ONE:(e=this.subtract(n.multiply(u)),t=u.add(e.div(n)))}if(n.equals(l.MIN_VALUE))return l.ZERO;if(this.isNegative())return n.isNegative()?this.negate().div(n.negate()):this.negate().div(n).negate();if(n.isNegative())return this.div(n.negate()).negate();for(t=l.ZERO,e=this;e.greaterThanOrEqual(n);){u=Math.max(1,Math.floor(e.toNumber()/n.toNumber()));for(var o=Math.ceil(Math.log(u)/Math.LN2),a=o<=48?1:Math.pow(2,o-48),s=l.fromNumber(u),f=s.multiply(n);f.isNegative()||f.greaterThan(e);)u-=a,s=l.fromNumber(u),f=s.multiply(n);s.isZero()&&(s=l.ONE),t=t.add(s),e=e.subtract(f)}return t}},{key:"modulo",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.subtract(this.div(n).multiply(n))}},{key:"not",value:function(){return l.fromBits(~this.low,~this.high)}},{key:"and",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low&n.low,this.high&n.high)}},{key:"or",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low|n.low,this.high|n.high)}},{key:"xor",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low^n.low,this.high^n.high)}},{key:"shiftLeft",value:function(n){return l.isInteger(n)&&(n=n.toInt()),0===(n&=63)?this:n<32?l.fromBits(this.low<>>32-n):l.fromBits(0,this.low<>>n|this.high<<32-n,this.high>>n):l.fromBits(this.high>>n-32,this.high>=0?0:-1)}}]),l}();i.__isInteger__,Object.defineProperty(i.prototype,"__isInteger__",{value:!0,enumerable:!1,configurable:!1}),i.isInteger=function(l){return(l&&l.__isInteger__)===!0};var o={};i.fromInt=function(l){var n,u;return l=0|l,-128<=l&&l<128&&(u=o[l])?u:(n=new i(l,l<0?-1:0,(!1)),-128<=l&&l<128&&(o[l]=n),n)},i.fromNumber=function(l){return isNaN(l)||!isFinite(l)?i.ZERO:l<=-c?i.MIN_VALUE:l+1>=c?i.MAX_VALUE:l<0?i.fromNumber(-l).negate():new i(l%s|0,l/s|0)},i.fromBits=function(l,n){return new i(l,n)},i.fromString=function(l,n){if(0===l.length)throw(0,r.newError)("number format error: empty string");if("NaN"===l||"Infinity"===l||"+Infinity"===l||"-Infinity"===l)return i.ZERO;if(n=n||10,n<2||360)throw(0,r.newError)('number format error: interior "-" character: '+l);if(0===u)return i.fromString(l.substring(1),n).negate();for(var e=i.fromNumber(Math.pow(n,8)),t=i.ZERO,o=0;o>8),this.putUInt8(l+1,255&n)}},{key:"putUInt16",value:function(l,n){this.putUInt8(l,n>>8&255),this.putUInt8(l+1,255&n)}},{key:"putInt32",value:function(l,n){this.putInt8(l,n>>24),this.putUInt8(l+1,n>>16&255),this.putUInt8(l+2,n>>8&255),this.putUInt8(l+3,255&n)}},{key:"putUInt32",value:function(l,n){this.putUInt8(l,n>>24&255),this.putUInt8(l+1,n>>16&255),this.putUInt8(l+2,n>>8&255),this.putUInt8(l+3,255&n)}},{key:"putInt64",value:function(l,n){this.putInt8(l,n>>48),this.putUInt8(l+1,n>>42&255),this.putUInt8(l+2,n>>36&255),this.putUInt8(l+3,n>>30&255),this.putUInt8(l+4,n>>24&255),this.putUInt8(l+5,n>>16&255),this.putUInt8(l+6,n>>8&255),this.putUInt8(l+7,255&n)}},{key:"putBytes",value:function(l,n){for(var u=0,e=n.remaining();u0}},{key:"reset",value:function(){this.position=0}},{key:"toString",value:function(){return this.constructor.name+"( position="+this.position+" )\n "+this.toHex()}},{key:"toHex",value:function(){for(var l="",n=0;n=u.length))return u.getUInt8(l);l-=u.length}}},{key:"getInt8",value:function(l){for(var n=0;n=u.length))return u.getInt8(l);l-=u.length}}},{key:"getFloat64",value:function(l){for(var n=r(8),u=0;u<8;u++)n.putUInt8(u,this.getUInt8(l+u));return n.getFloat64(0)}}]),n}(f),p=function(l){function n(l){t(this,n);var u=l instanceof s.Buffer?l:new s.Buffer(l);i(Object.getPrototypeOf(n.prototype),"constructor",this).call(this,u.length),this._buffer=u}return e(n,l),o(n,[{key:"getUInt8",value:function(l){return this._buffer.readUInt8(l)}},{key:"getInt8",value:function(l){return this._buffer.readInt8(l)}},{key:"getFloat64",value:function(l){return this._buffer.readDoubleBE(l)}},{key:"putUInt8",value:function(l,n){this._buffer.writeUInt8(n,l)}},{key:"putInt8",value:function(l,n){this._buffer.writeInt8(n,l)}},{key:"putFloat64",value:function(l,n){this._buffer.writeDoubleBE(n,l)}},{key:"putBytes",value:function(l,u){if(!(u instanceof n))throw(0,a.newError)("Copying not yet implemented.");var e=Math.min(u.length-u.position,this.length-l);u._buffer.copy(this._buffer,l,u.position,u.position+e),u.position+=e}},{key:"getSlice",value:function(l,u){return new n(this._buffer.slice(l,l+u))}}]),n}(f),b=c;try{l.resolve("buffer"),b=p}catch(v){}u["default"]={BaseBuffer:f,HeapBuffer:c,SliceBuffer:h,CombinedBuffer:d,NodeBuffer:p,alloc:r},n.exports=u["default"]},{"./../error":142,buffer:46}],147:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function r(){var n=l,u=n("process");return u.env["win32"==u.platform?"USERPROFILE":"HOME"]}function i(l){try{v["default"].mkdirSync(l)}catch(n){if("ENOENT"===n.code)return i(g["default"].dirname(l)),void i(l);if("EEXIST"===n.code)return;throw n}}function o(n,u,e){try{v["default"].accessSync(u)}catch(t){return e(null)}var r=!1;l("readline").createInterface({input:v["default"].createReadStream(u)}).on("line",function(l){!r&&l.startsWith(n)&&(r=!0,e(l.split(" ")[1]))}).on("close",function(){r||e(null)})}function a(l,n,u,e){if(S[l])return e(null);S[l]=1;try{v["default"].accessSync(n)}catch(t){i(g["default"].dirname(n))}v["default"].appendFile(n,l+" "+u+m.EOL,"utf8",function(n){return delete S[l],n&&console.log(n),e(n)})}function s(l,n){var u=arguments.length<=2||void 0===arguments[2]?function(){return null}:arguments[2];if(l.encrypted===!1){var e=h["default"].connect(l.port,l.host,n);return e.on("error",u),e}return E[l.trust]?E[l.trust](l,n,u):void u((0,w.newError)("Unknown trust strategy: "+l.trust+". Please use either trust:'TRUST_SIGNED_CERTIFICATES' or trust:'TRUST_ON_FIRST_USE' in your driver configuration. Alternatively, you can disable encryption by setting `encrypted:false`. There is no mechanism to use encryption without trust verification, because this incurs the overhead of encryption without improving security. If the driver does not verify that the peer it is connected to is really Neo4j, it is very easy for an attacker to bypass the encryption by pretending to be Neo4j."))}Object.defineProperty(u,"__esModule",{value:!0});var f=function(){function l(l,n){for(var u=0;u0;)this._ensure(1),this._buffer.remaining()>n.remaining()?this._buffer.writeBytes(n):this._buffer.writeBytes(n.readSlice(this._buffer.remaining()));return this}},{key:"flush",value:function(){if(this._buffer.position>0){this._closeChunkIfOpen();var l=this._buffer;this._buffer=null,this._ch.write(l.getSlice(0,l.position)),this._buffer=s["default"].alloc(this._bufferSize),this._chunkOpen=!1}return this}},{key:"messageBoundary",value:function(){this._closeChunkIfOpen(),this._buffer.remaining()=2?this._onHeader(l.readUInt16()):(this._partialChunkHeader=l.readUInt8()<<8,this.IN_HEADER)}},{key:"IN_HEADER",value:function(l){return this._onHeader(65535&(this._partialChunkHeader|l.readUInt8()))}},{key:"IN_CHUNK",value:function(l){return this._chunkSize<=l.remaining()?(this._currentMessage.push(l.readSlice(this._chunkSize)),this.AWAITING_CHUNK):(this._chunkSize-=l.remaining(),this._currentMessage.push(l.readSlice(l.remaining())),this.IN_CHUNK)}},{key:"CLOSED",value:function(l){}},{key:"_onHeader",value:function(l){if(0==l){var n=void 0;return n=1==this._currentMessage.length?this._currentMessage[0]:new s["default"].CombinedBuffer(this._currentMessage),this._currentMessage=[],this.onmessage(n),this.AWAITING_CHUNK}return this._chunkSize=l,this.IN_CHUNK}},{key:"write",value:function(l){for(;l.hasRemaining();)this._state=this._state(l)}}]),l}();u["default"]={Chunker:d,Dechunker:p},n.exports=u["default"]},{"./buf":146}],150:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function r(l){return l.match(q)[2]}function i(l){return l.match(q)[3]}function o(){}function a(l){var n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],u=n.channel||E;return new K(new u({host:r(l),port:i(l)||7687,encrypted:null==n.encrypted?(0,y["default"])("trust_on_first_use"):n.encrypted,trust:n.trust||((0,y["default"])("trust_on_first_use")?"TRUST_ON_FIRST_USE":"TRUST_SIGNED_CERTIFICATES"),trustedCertificates:n.trustedCertificates||[],knownHosts:n.knownHosts}))}Object.defineProperty(u,"__esModule",{value:!0});var s=function(){function l(l,n){for(var u=0;u0?(f=e[a-1],f instanceof k["default"].UnboundRelationship&&(e[a-1]=f=f.bind(r.identity,s.identity))):(f=e[-a-1],f instanceof k["default"].UnboundRelationship&&(e[-a-1]=f=f.bind(s.identity,r.identity))),i.push(new k["default"].PathSegment(r,f,s)),r=s}return new k["default"].Path(u[0],u[u.length-1],i)}},K=function(){function l(n){t(this,l),this._pendingObservers=[],this._currentObserver=void 0,this._ch=n,this._dechunker=new b["default"].Dechunker,this._chunker=new b["default"].Chunker(n),this._packer=new m["default"].Packer(this._chunker),this._unpacker=new m["default"].Unpacker,this._isHandlingFailure=!1,this._isBroken=!1,this._unpacker.structMappers[U]=F.node,this._unpacker.structMappers[T]=F.rel,this._unpacker.structMappers[L]=F.unboundRel,this._unpacker.structMappers[N]=F.path;var u=this;this._ch.onmessage=function(l){var n=l.readInt32();1==n?(u._ch.onmessage=function(l){u._dechunker.write(l)},l.hasRemaining()&&u._dechunker.write(l.readSlice(l.remaining()))):1213486160==n?u._handleFatalError((0,S.newError)("Server responded HTTP. Make sure you are not trying to connect to the http endpoint (HTTP defaults to port 7474 whereas BOLT defaults to port 7687)")):u._handleFatalError((0,S.newError)("Unknown Bolt protocol version: "+n))},this._ch.onerror=this._handleFatalError.bind(this),this._ch._error&&this._handleFatalError(this._ch._error),this._dechunker.onmessage=function(l){u._handleMessage(u._unpacker.unpack(l))};var e=(0,_.alloc)(20);e.writeInt32(D),e.writeInt32(1),e.writeInt32(0),e.writeInt32(0),e.writeInt32(0),e.reset(),this._ch.write(e)}return s(l,[{key:"_handleFatalError",value:function(l){for(this._isBroken=!0,this._error=l,this._currentObserver&&this._currentObserver.onError&&this._currentObserver.onError(l);this._pendingObservers.length>0;){var n=this._pendingObservers.shift();n&&n.onError&&n.onError(l)}}},{key:"_handleMessage",value:function(l){var n=this;switch(l.signature){case O:this._currentObserver.onNext(l.fields[0]);break;case R:try{this._currentObserver.onCompleted(l.fields[0])}finally{this._currentObserver=this._pendingObservers.shift()}break;case P:try{this._currentObserver.onError(l),this._errorMsg=l}finally{this._currentObserver=this._pendingObservers.shift(),this._isHandlingFailure||!function(){n._isHandlingFailure=!0;var l=n;n._ackFailure({onNext:o,onError:o,onCompleted:function(){l._isHandlingFailure=!1}})}()}break;case C:try{this._errorMsg&&this._currentObserver.onError?this._currentObserver.onError(this._errorMsg):this._currentObserver.onError&&this._currentObserver.onError(l)}finally{this._currentObserver=this._pendingObservers.shift()}break;default:this._handleFatalError((0,S.newError)("Unknown Bolt protocol message: "+l))}}},{key:"initialize",value:function(l,n,u){var e=this;this._queueObserver(u),this._packer.packStruct(M,[this._packable(l),this._packable(n)],function(l){return e._handleFatalError(l)}),this._chunker.messageBoundary(),this.sync()}},{key:"run",value:function(l,n,u){var e=this;this._queueObserver(u),this._packer.packStruct(x,[this._packable(l),this._packable(n)],function(l){return e._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"pullAll",value:function(l){var n=this;this._queueObserver(l),this._packer.packStruct(j,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"discardAll",value:function(l){var n=this;this._queueObserver(l),this._packer.packStruct(B,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"reset",value:function(l){var n=this;this._isHandlingFailure=!0;var u=this,e={onNext:l?l.onNext:o,onError:l?l.onError:o,onCompleted:function(){u._isHandlingFailure=!1,l&&l.onCompleted()}};this._queueObserver(e),this._packer.packStruct(A,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"_ackFailure",value:function(l){var n=this;this._queueObserver(l),this._packer.packStruct(I,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"_queueObserver",value:function(l){return this._isBroken?void(l&&l.onError&&l.onError(this._error)):(l=l||z,l.onCompleted=l.onCompleted||o,l.onError=l.onError||o,l.onNext=l.onNext||o,void(void 0===this._currentObserver?this._currentObserver=l:this._pendingObservers.push(l)))}},{key:"sync",value:function(){this._chunker.flush()}},{key:"isOpen",value:function(){return!this._isBroken&&this._ch._open}},{key:"close",value:function(l){this._ch.close(l)}},{key:"_packable",value:function(l){var n=this;return this._packer.packable(l,function(l){return n._handleFatalError(l)})}}]),l}();u["default"]={connect:a,Connection:K},n.exports=u["default"]},{"../graph-types":143,"../integer":145,"./../error":142,"./buf":146,"./ch-node":147,"./ch-websocket":148,"./chunking":149,"./features":151,"./packstream":153}],151:[function(l,n,u){"use strict";function e(l){return t[l]&&t[l]()}Object.defineProperty(u,"__esModule",{value:!0});var t={trust_on_first_use:function(){try{var n=l("tls").TLSSocket.prototype.getPeerCertificate;return n.length>=1}catch(u){return!1}}};u["default"]=e,n.exports=u["default"]},{tls:43}],152:[function(l,n,u){"use strict";Object.defineProperty(u,"__esModule",{value:!0}),u["default"]={debug:function(l){console.log(l)}},n.exports=u["default"]},{}],153:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var r=function(){function l(l,n){for(var u=0;u0&&(l+=", "),l+=this.fields[n];return"Structure("+this.signature+", ["+this.fields+"])"}}]),l}(),P=function(){function l(n){t(this,l),this._ch=n}return r(l,[{key:"packable",value:function(l,n){var u=this;if(null===l)return function(){return u._ch.writeUInt8(p)};if(l===!0)return function(){return u._ch.writeUInt8(y)};if(l===!1)return function(){return u._ch.writeUInt8(v)};if("number"==typeof l)return function(){return u.packFloat(l)};if("string"==typeof l)return function(){return u.packString(l,n)};if(l instanceof a.Integer)return function(){return u.packInteger(l)};if(l instanceof Array)return function(){u.packListHeader(l.length,n);for(var e=0;e>0),this._ch.writeUInt8(e%256),this._ch.writeBytes(u)):e<4294967296?(this._ch.writeUInt8(E),this._ch.writeUInt8((e/16777216>>0)%256),this._ch.writeUInt8((e/65536>>0)%256),this._ch.writeUInt8((e/256>>0)%256),this._ch.writeUInt8(e%256),this._ch.writeBytes(u)):n((0,s.newError)("UTF-8 strings of size "+e+" are not supported"))}},{key:"packListHeader",value:function(l,n){l<16?this._ch.writeUInt8(c|l):l<256?(this._ch.writeUInt8(M),this._ch.writeUInt8(l)):l<65536?(this._ch.writeUInt8(I),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)):l<4294967296?(this._ch.writeUInt8(A),this._ch.writeUInt8((l/16777216>>0)%256),this._ch.writeUInt8((l/65536>>0)%256),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)):n((0,s.newError)("Lists of size "+l+" are not supported"))}},{key:"packMapHeader",value:function(l,n){l<16?this._ch.writeUInt8(h|l):l<256?(this._ch.writeUInt8(x),this._ch.writeUInt8(l)):l<65536?(this._ch.writeUInt8(B),this._ch.writeUInt8(l/256>>0),this._ch.writeUInt8(l%256)):l<4294967296?(this._ch.writeUInt8(j),this._ch.writeUInt8((l/16777216>>0)%256),this._ch.writeUInt8((l/65536>>0)%256),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)):n((0,s.newError)("Maps of size "+l+" are not supported"))}},{key:"packStructHeader",value:function(l,n,u){l<16?(this._ch.writeUInt8(d|l),this._ch.writeUInt8(n)):l<256?(this._ch.writeUInt8(R),this._ch.writeUInt8(l),this._ch.writeUInt8(n)):l<65536?(this._ch.writeUInt8(O),this._ch.writeUInt8(l/256>>0),this._ch.writeUInt8(l%256)):u((0,s.newError)("Structures of size "+l+" are not supported"))}}]),l}(),U=function(){function l(){t(this,l),this.structMappers={}}return r(l,[{key:"unpackList",value:function(l,n){for(var u=[],e=0;e=0&&n<128)return(0,a["int"])(n);if(n>=240&&n<256)return(0,a["int"])(n-256);if(n==g)return(0,a["int"])(l.readInt8());if(n==m)return(0,a["int"])(l.readInt16());if(n==_){var u=l.readInt32();return(0,a["int"])(u)}if(n==w){var e=l.readInt32(),t=l.readInt32();return new a.Integer(t,e)}if(n==k)return o["default"].decode(l,l.readUInt8());if(n==S)return o["default"].decode(l,l.readUInt16());if(n==E)return o["default"].decode(l,l.readUInt32());if(n==M)return this.unpackList(l.readUInt8(),l);if(n==I)return this.unpackList(l.readUInt16(),l);if(n==A)return this.unpackList(l.readUInt32(),l);if(n==x)return this.unpackMap(l.readUInt8(),l);if(n==B)return this.unpackMap(l.readUInt16(),l);if(n==j)return this.unpackMap(l.readUInt32(),l);if(n==R)return this.unpackStruct(l.readUInt8(),l);if(n==O)return this.unpackStruct(l.readUInt16(),l);var r=240&n,i=15&n;if(128==r)return o["default"].decode(l,i);if(144==r)return this.unpackList(i,l);if(160==r)return this.unpackMap(i,l);if(176==r)return this.unpackStruct(i,l);throw(0,s.newError)("Unknown packed value with marker "+n.toString(16))}}]),l}();u["default"]={Packer:P,Unpacker:U,Structure:C},n.exports=u["default"]},{"../integer":145,"./../error":142,"./buf":146,"./log":152,"./utf8":156}],154:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0?this._pool.pop():this._create(this._release)}},{key:"_release",value:function(l){this._pool.length>=this._maxIdle||!this._validate(l)?this._destroy(l):this._pool.push(l)}}]),l}();u["default"]={Pool:r},n.exports=u["default"]},{}],155:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0){this._fieldKeys=l.fields;for(var n=0;n0)for(var n=0;n<_queuedRecords.length;n++)l.onNext(_queuedRecords[n]);this._tail&&l.onCompleted(this._tail),this._observer=l}}]),l}();u["default"]=i,n.exports=u["default"]},{"../record":157}],156:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(u,"__esModule",{value:!0});var t=l("./buf"),r=e(t),i=l("string_decoder"),o=l("./../error"),a={};try{!function(){l.resolve("buffer");var n=new i.StringDecoder("utf8"),u=l("buffer");a={encode:function(l){return new r["default"].NodeBuffer(new u.Buffer(l,"UTF-8"))},decode:function(l,u){if(l instanceof r["default"].NodeBuffer){var e=l.position,t=e+u;return l.position=Math.min(t,l.length),l._buffer.toString("utf8",e,t)}if(l instanceof r["default"].CombinedBuffer){var i=c(l,u,function(l){return n.write(l._buffer)},function(){return n.end()});return i}throw(0,o.newError)("Don't know how to decode strings from `"+l+"`.")}}}()}catch(s){var f;!function(){f=l("../../external/text-encoding/index");var n=new f.TextEncoder("utf-8"),u=new f.TextDecoder("utf-8");a={encode:function(l){return new r["default"].HeapBuffer(n.encode(l).buffer)},decode:function(l,n){if(l instanceof r["default"].HeapBuffer)return u.decode(l.readView(Math.min(n,l.length-l.position)));for(var e=r["default"].alloc(n),t=0;t=n.length)return r-=n.length,"";n._updatePos(r-n.position);var e=Math.min(n.length-r,t),i=n.readSlice(e);return n._updatePos(e),t=Math.max(t-i.length,0),r=0,l+u(i)},"");return i+e()};u["default"]=a,n.exports=u["default"]},{"../../external/text-encoding/index":137,"./../error":142,"./buf":146,buffer:46,string_decoder:133}],157:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function t(l){var n={};return l.forEach(function(l,u){n[l]=u}),n}Object.defineProperty(u,"__esModule",{value:!0});var r=function(){function l(l,n){for(var u=0;uthis._fields.length-1||n<0)throw(0,i.newError)("This record has no field with index '"+n+"'. Remember that indexes start at `0`, and make sure your statement returns records in the shape you meant it to.");return this._fields[n]}}]),l}();u.Record=o},{"./error":142}],158:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0}},{key:"nodesCreated",value:function(){return this._stats.nodesCreated}},{key:"nodesDeleted",value:function(){return this._stats.nodesDeleted}},{key:"relationshipsCreated",value:function(){return this._stats.relationshipsCreated}},{key:"relationshipsDeleted",value:function(){return this._stats.relationshipsDeleted}},{key:"propertiesSet",value:function(){return this._stats.propertiesSet}},{key:"labelsAdded",value:function(){return this._stats.labelsAdded}},{key:"labelsRemoved",value:function(){return this._stats.labelsRemoved}},{key:"indexesAdded",value:function(){return this._stats.indexesAdded}},{key:"indexesRemoved",value:function(){return this._stats.indexesRemoved}},{key:"constraintsAdded",value:function(){return this._stats.constraintsAdded}},{key:"constraintsRemoved",value:function(){return this._stats.constraintsRemoved}}]),l}(),f=function(){function l(n){e(this,l),this.code=n.code,this.title=n.title,this.description=n.description,this.severity=n.severity,this.position=l._constructPosition(n.position)}return t(l,null,[{key:"_constructPosition",value:function(l){return l?{offset:l.offset.toInt(),line:l.line.toInt(),column:l.column.toInt()}:{}}}]),l}(),c={READ_ONLY:"r",READ_WRITE:"rw",WRITE_ONLY:"w",SCHEMA_WRITE:"s"};u["default"]={ResultSummary:i,statementType:c},n.exports=u["default"]},{"./integer":145}],159:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u> 0) % 256); this._ch.writeUInt8(size % 256); } else { - throw (0, _error.newError)("Lists of size " + size + " are not supported"); + onError((0, _error.newError)("Lists of size " + size + " are not supported")); } } }, { key: "packMapHeader", - value: function packMapHeader(size) { + value: function packMapHeader(size, onError) { if (size < 0x10) { this._ch.writeUInt8(TINY_MAP | size); } else if (size < 0x100) { @@ -268,12 +309,12 @@ var Packer = (function () { this._ch.writeUInt8((size / 256 >> 0) % 256); this._ch.writeUInt8(size % 256); } else { - throw (0, _error.newError)("Maps of size " + size + " are not supported"); + onError((0, _error.newError)("Maps of size " + size + " are not supported")); } } }, { key: "packStructHeader", - value: function packStructHeader(size, signature) { + value: function packStructHeader(size, signature, onError) { if (size < 0x10) { this._ch.writeUInt8(TINY_STRUCT | size); this._ch.writeUInt8(signature); @@ -286,7 +327,7 @@ var Packer = (function () { this._ch.writeUInt8(size / 256 >> 0); this._ch.writeUInt8(size % 256); } else { - throw (0, _error.newError)("Structures of size " + size + " are not supported"); + onError((0, _error.newError)("Structures of size " + size + " are not supported")); } } }]); diff --git a/app/scripts/services/Bolt.coffee b/app/scripts/services/Bolt.coffee index 0caf16fe610..075f7981d11 100644 --- a/app/scripts/services/Bolt.coffee +++ b/app/scripts/services/Bolt.coffee @@ -46,49 +46,30 @@ angular.module('neo4jApp.services') driver = bolt.driver("bolt://" + host, bolt.auth.basic(username, password), {encrypted: encrypted}) driver - testQuery = (driver) -> + testConnection = (withoutCredentials = no) -> q = $q.defer() + driver = getDriverObj withoutCredentials driver.onError = (e) -> if e instanceof Event and e.type is 'error' q.reject getSocketErrorObj() else if e.code and e.message # until Neo4jError is in drivers public API q.reject buildErrorObj(e.code, e.message) - session = driver.session() - p = session.run("CALL db.labels") - p.then((r) -> - session.close() - q.resolve r - ).catch((e)-> - session.close() - q.reject e - ) + else if e.fields && e.fields[0] + q.reject e + driver.onCompleted = (m) -> + q.resolve m + driver.session() q.promise - testConnection = (withoutCredentials = no) -> + connect = (withoutCredentials = no) -> q = $q.defer() - driver = getDriverObj withoutCredentials - testQuery(driver).then((r) -> + testConnection(withoutCredentials).then((r) -> + _driver = getDriverObj withoutCredentials q.resolve r - _errorStatus = null - driver.close() - ).catch((e) -> - q.reject e - _errorStatus = e - driver.close() + ,(e) -> q.reject e ) q.promise - connect = (withoutCredentials = no) -> - q = $q.defer() - _driver = getDriverObj withoutCredentials - testQuery(_driver) - .then((r) -> q.resolve r) - .catch((e) -> - _driver = null unless e.fields[0].code is 'Neo.ClientError.Security.CredentialsExpired' - q.reject e - ) - q.promise - clearConnection = -> _driver.close() if _driver? _driver = null @@ -130,14 +111,12 @@ angular.module('neo4jApp.services') session.close() q.resolve r ).catch((txe) -> - session.close() q.reject txe ) else session.close() q.resolve r ).catch((e) -> - session.close() q.reject e ) else @@ -146,7 +125,6 @@ angular.module('neo4jApp.services') session.close() q.resolve r ).catch((e) -> - session.close() q.reject e ) {tx: tx, promise: q.promise, session: session} diff --git a/app/scripts/services/UtilityBolt.coffee b/app/scripts/services/UtilityBolt.coffee index c763c64ae1a..6532082f308 100644 --- a/app/scripts/services/UtilityBolt.coffee +++ b/app/scripts/services/UtilityBolt.coffee @@ -165,20 +165,18 @@ angular.module('neo4jApp.services') q = $q.defer() r = Bolt.testConnection withoutCredentials r.then((r) -> - res = Bolt.constructResult r Bolt.connect() if retainConnection - if not res.data.errors.length + if (r.credentials_expired) + errObj = {data: {}} + errObj.data.password_change = 'true' + errObj.status = 403 + q.reject errObj + else $rootScope.bolt_connection_failure = no return q.resolve({}) - else - return q.reject({status: 401, data: res}) - ).catch((err) -> + ,(err) -> errObj = Bolt.constructResult err - if errObj.data.errors[0].code is 'Neo.ClientError.Security.CredentialsExpired' - errObj.data.password_change = 'true' - errObj.status = 403 - Bolt.connect() if retainConnection - else if errObj.data.errors[0].code is 'Socket.Error' || errObj.data.errors[0].message.indexOf('WebSocket connection failure') == 0 + if errObj.data.errors[0].code is 'Socket.Error' || errObj.data.errors[0].message.indexOf('WebSocket connection failure') == 0 errObj.status = 0 $rootScope.bolt_connection_failure = yes else @@ -186,6 +184,7 @@ angular.module('neo4jApp.services') q.reject errObj ) q.promise + setNewPassword: (username, newPasswd) -> q = $q.defer() Bolt.boltTransaction("CALL dbms.changePassword({password})", {password: newPasswd}).promise