You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

11650 lines
1016 KiB

/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// node_modules/fuzzysort/fuzzysort.js
var require_fuzzysort = __commonJS({
"node_modules/fuzzysort/fuzzysort.js"(exports, module2) {
((root, UMD) => {
if (typeof define === "function" && define.amd)
define([], UMD);
else if (typeof module2 === "object" && module2.exports)
module2.exports = UMD();
else
root["fuzzysort"] = UMD();
})(exports, (_3) => {
"use strict";
var single = (search, target) => {
if (search == "farzher")
return { target: "farzher was here (^-^*)/", score: 0, _indexes: [0] };
if (!search || !target)
return NULL;
var preparedSearch = getPreparedSearch(search);
if (!isObj(target))
target = getPrepared(target);
var searchBitflags = preparedSearch.bitflags;
if ((searchBitflags & target._bitflags) !== searchBitflags)
return NULL;
return algorithm(preparedSearch, target);
};
var go = (search, targets, options) => {
if (search == "farzher")
return [{ target: "farzher was here (^-^*)/", score: 0, _indexes: [0], obj: targets ? targets[0] : NULL }];
if (!search)
return options && options.all ? all(search, targets, options) : noResults;
var preparedSearch = getPreparedSearch(search);
var searchBitflags = preparedSearch.bitflags;
var containsSpace = preparedSearch.containsSpace;
var threshold = options && options.threshold || INT_MIN;
var limit = options && options["limit"] || INT_MAX;
var resultsLen = 0;
var limitedCount = 0;
var targetsLen = targets.length;
if (options && options.key) {
var key = options.key;
for (var i4 = 0; i4 < targetsLen; ++i4) {
var obj = targets[i4];
var target = getValue(obj, key);
if (!target)
continue;
if (!isObj(target))
target = getPrepared(target);
if ((searchBitflags & target._bitflags) !== searchBitflags)
continue;
var result = algorithm(preparedSearch, target);
if (result === NULL)
continue;
if (result.score < threshold)
continue;
result = { target: result.target, _targetLower: "", _targetLowerCodes: NULL, _nextBeginningIndexes: NULL, _bitflags: 0, score: result.score, _indexes: result._indexes, obj };
if (resultsLen < limit) {
q4.add(result);
++resultsLen;
} else {
++limitedCount;
if (result.score > q4.peek().score)
q4.replaceTop(result);
}
}
} else if (options && options.keys) {
var scoreFn = options["scoreFn"] || defaultScoreFn;
var keys2 = options.keys;
var keysLen = keys2.length;
for (var i4 = 0; i4 < targetsLen; ++i4) {
var obj = targets[i4];
var objResults = new Array(keysLen);
for (var keyI = 0; keyI < keysLen; ++keyI) {
var key = keys2[keyI];
var target = getValue(obj, key);
if (!target) {
objResults[keyI] = NULL;
continue;
}
if (!isObj(target))
target = getPrepared(target);
if ((searchBitflags & target._bitflags) !== searchBitflags)
objResults[keyI] = NULL;
else
objResults[keyI] = algorithm(preparedSearch, target);
}
objResults.obj = obj;
var score = scoreFn(objResults);
if (score === NULL)
continue;
if (score < threshold)
continue;
objResults.score = score;
if (resultsLen < limit) {
q4.add(objResults);
++resultsLen;
} else {
++limitedCount;
if (score > q4.peek().score)
q4.replaceTop(objResults);
}
}
} else {
for (var i4 = 0; i4 < targetsLen; ++i4) {
var target = targets[i4];
if (!target)
continue;
if (!isObj(target))
target = getPrepared(target);
if ((searchBitflags & target._bitflags) !== searchBitflags)
continue;
var result = algorithm(preparedSearch, target);
if (result === NULL)
continue;
if (result.score < threshold)
continue;
if (resultsLen < limit) {
q4.add(result);
++resultsLen;
} else {
++limitedCount;
if (result.score > q4.peek().score)
q4.replaceTop(result);
}
}
}
if (resultsLen === 0)
return noResults;
var results = new Array(resultsLen);
for (var i4 = resultsLen - 1; i4 >= 0; --i4)
results[i4] = q4.poll();
results.total = resultsLen + limitedCount;
return results;
};
var highlight = (result, hOpen, hClose) => {
if (typeof hOpen === "function")
return highlightCallback(result, hOpen);
if (result === NULL)
return NULL;
if (hOpen === void 0)
hOpen = "<b>";
if (hClose === void 0)
hClose = "</b>";
var highlighted = "";
var matchesIndex = 0;
var opened = false;
var target = result.target;
var targetLen = target.length;
var indexes2 = result._indexes;
indexes2 = indexes2.slice(0, indexes2.len).sort((a3, b3) => a3 - b3);
for (var i4 = 0; i4 < targetLen; ++i4) {
var char = target[i4];
if (indexes2[matchesIndex] === i4) {
++matchesIndex;
if (!opened) {
opened = true;
highlighted += hOpen;
}
if (matchesIndex === indexes2.length) {
highlighted += char + hClose + target.substr(i4 + 1);
break;
}
} else {
if (opened) {
opened = false;
highlighted += hClose;
}
}
highlighted += char;
}
return highlighted;
};
var highlightCallback = (result, cb) => {
if (result === NULL)
return NULL;
var target = result.target;
var targetLen = target.length;
var indexes2 = result._indexes;
indexes2 = indexes2.slice(0, indexes2.len).sort((a3, b3) => a3 - b3);
var highlighted = "";
var matchI = 0;
var indexesI = 0;
var opened = false;
var result = [];
for (var i4 = 0; i4 < targetLen; ++i4) {
var char = target[i4];
if (indexes2[indexesI] === i4) {
++indexesI;
if (!opened) {
opened = true;
result.push(highlighted);
highlighted = "";
}
if (indexesI === indexes2.length) {
highlighted += char;
result.push(cb(highlighted, matchI++));
highlighted = "";
result.push(target.substr(i4 + 1));
break;
}
} else {
if (opened) {
opened = false;
result.push(cb(highlighted, matchI++));
highlighted = "";
}
}
highlighted += char;
}
return result;
};
var indexes = (result) => result._indexes.slice(0, result._indexes.len).sort((a3, b3) => a3 - b3);
var prepare = (target) => {
if (typeof target !== "string")
target = "";
var info = prepareLowerInfo(target);
return { "target": target, _targetLower: info._lower, _targetLowerCodes: info.lowerCodes, _nextBeginningIndexes: NULL, _bitflags: info.bitflags, "score": NULL, _indexes: [0], "obj": NULL };
};
var prepareSearch = (search) => {
if (typeof search !== "string")
search = "";
search = search.trim();
var info = prepareLowerInfo(search);
var spaceSearches = [];
if (info.containsSpace) {
var searches = search.split(/\s+/);
searches = [...new Set(searches)];
for (var i4 = 0; i4 < searches.length; i4++) {
if (searches[i4] === "")
continue;
var _info = prepareLowerInfo(searches[i4]);
spaceSearches.push({ lowerCodes: _info.lowerCodes, _lower: searches[i4].toLowerCase(), containsSpace: false });
}
}
return { lowerCodes: info.lowerCodes, bitflags: info.bitflags, containsSpace: info.containsSpace, _lower: info._lower, spaceSearches };
};
var getPrepared = (target) => {
if (target.length > 999)
return prepare(target);
var targetPrepared = preparedCache.get(target);
if (targetPrepared !== void 0)
return targetPrepared;
targetPrepared = prepare(target);
preparedCache.set(target, targetPrepared);
return targetPrepared;
};
var getPreparedSearch = (search) => {
if (search.length > 999)
return prepareSearch(search);
var searchPrepared = preparedSearchCache.get(search);
if (searchPrepared !== void 0)
return searchPrepared;
searchPrepared = prepareSearch(search);
preparedSearchCache.set(search, searchPrepared);
return searchPrepared;
};
var all = (search, targets, options) => {
var results = [];
results.total = targets.length;
var limit = options && options.limit || INT_MAX;
if (options && options.key) {
for (var i4 = 0; i4 < targets.length; i4++) {
var obj = targets[i4];
var target = getValue(obj, options.key);
if (!target)
continue;
if (!isObj(target))
target = getPrepared(target);
target.score = INT_MIN;
target._indexes.len = 0;
var result = target;
result = { target: result.target, _targetLower: "", _targetLowerCodes: NULL, _nextBeginningIndexes: NULL, _bitflags: 0, score: target.score, _indexes: NULL, obj };
results.push(result);
if (results.length >= limit)
return results;
}
} else if (options && options.keys) {
for (var i4 = 0; i4 < targets.length; i4++) {
var obj = targets[i4];
var objResults = new Array(options.keys.length);
for (var keyI = options.keys.length - 1; keyI >= 0; --keyI) {
var target = getValue(obj, options.keys[keyI]);
if (!target) {
objResults[keyI] = NULL;
continue;
}
if (!isObj(target))
target = getPrepared(target);
target.score = INT_MIN;
target._indexes.len = 0;
objResults[keyI] = target;
}
objResults.obj = obj;
objResults.score = INT_MIN;
results.push(objResults);
if (results.length >= limit)
return results;
}
} else {
for (var i4 = 0; i4 < targets.length; i4++) {
var target = targets[i4];
if (!target)
continue;
if (!isObj(target))
target = getPrepared(target);
target.score = INT_MIN;
target._indexes.len = 0;
results.push(target);
if (results.length >= limit)
return results;
}
}
return results;
};
var algorithm = (preparedSearch, prepared, allowSpaces = false) => {
if (allowSpaces === false && preparedSearch.containsSpace)
return algorithmSpaces(preparedSearch, prepared);
var searchLower = preparedSearch._lower;
var searchLowerCodes = preparedSearch.lowerCodes;
var searchLowerCode = searchLowerCodes[0];
var targetLowerCodes = prepared._targetLowerCodes;
var searchLen = searchLowerCodes.length;
var targetLen = targetLowerCodes.length;
var searchI = 0;
var targetI = 0;
var matchesSimpleLen = 0;
for (; ; ) {
var isMatch = searchLowerCode === targetLowerCodes[targetI];
if (isMatch) {
matchesSimple[matchesSimpleLen++] = targetI;
++searchI;
if (searchI === searchLen)
break;
searchLowerCode = searchLowerCodes[searchI];
}
++targetI;
if (targetI >= targetLen)
return NULL;
}
var searchI = 0;
var successStrict = false;
var matchesStrictLen = 0;
var nextBeginningIndexes = prepared._nextBeginningIndexes;
if (nextBeginningIndexes === NULL)
nextBeginningIndexes = prepared._nextBeginningIndexes = prepareNextBeginningIndexes(prepared.target);
var firstPossibleI = targetI = matchesSimple[0] === 0 ? 0 : nextBeginningIndexes[matchesSimple[0] - 1];
var backtrackCount = 0;
if (targetI !== targetLen)
for (; ; ) {
if (targetI >= targetLen) {
if (searchI <= 0)
break;
++backtrackCount;
if (backtrackCount > 200)
break;
--searchI;
var lastMatch = matchesStrict[--matchesStrictLen];
targetI = nextBeginningIndexes[lastMatch];
} else {
var isMatch = searchLowerCodes[searchI] === targetLowerCodes[targetI];
if (isMatch) {
matchesStrict[matchesStrictLen++] = targetI;
++searchI;
if (searchI === searchLen) {
successStrict = true;
break;
}
++targetI;
} else {
targetI = nextBeginningIndexes[targetI];
}
}
}
var substringIndex = prepared._targetLower.indexOf(searchLower, matchesSimple[0]);
var isSubstring = ~substringIndex;
if (isSubstring && !successStrict) {
for (var i4 = 0; i4 < matchesSimpleLen; ++i4)
matchesSimple[i4] = substringIndex + i4;
}
var isSubstringBeginning = false;
if (isSubstring) {
isSubstringBeginning = prepared._nextBeginningIndexes[substringIndex - 1] === substringIndex;
}
{
if (successStrict) {
var matchesBest = matchesStrict;
var matchesBestLen = matchesStrictLen;
} else {
var matchesBest = matchesSimple;
var matchesBestLen = matchesSimpleLen;
}
var score = 0;
var extraMatchGroupCount = 0;
for (var i4 = 1; i4 < searchLen; ++i4) {
if (matchesBest[i4] - matchesBest[i4 - 1] !== 1) {
score -= matchesBest[i4];
++extraMatchGroupCount;
}
}
var unmatchedDistance = matchesBest[searchLen - 1] - matchesBest[0] - (searchLen - 1);
score -= (12 + unmatchedDistance) * extraMatchGroupCount;
if (matchesBest[0] !== 0)
score -= matchesBest[0] * matchesBest[0] * 0.2;
if (!successStrict) {
score *= 1e3;
} else {
var uniqueBeginningIndexes = 1;
for (var i4 = nextBeginningIndexes[0]; i4 < targetLen; i4 = nextBeginningIndexes[i4])
++uniqueBeginningIndexes;
if (uniqueBeginningIndexes > 24)
score *= (uniqueBeginningIndexes - 24) * 10;
}
if (isSubstring)
score /= 1 + searchLen * searchLen * 1;
if (isSubstringBeginning)
score /= 1 + searchLen * searchLen * 1;
score -= targetLen - searchLen;
prepared.score = score;
for (var i4 = 0; i4 < matchesBestLen; ++i4)
prepared._indexes[i4] = matchesBest[i4];
prepared._indexes.len = matchesBestLen;
return prepared;
}
};
var algorithmSpaces = (preparedSearch, target) => {
var seen_indexes = /* @__PURE__ */ new Set();
var score = 0;
var result = NULL;
var first_seen_index_last_search = 0;
var searches = preparedSearch.spaceSearches;
for (var i4 = 0; i4 < searches.length; ++i4) {
var search = searches[i4];
result = algorithm(search, target);
if (result === NULL)
return NULL;
score += result.score;
if (result._indexes[0] < first_seen_index_last_search) {
score -= first_seen_index_last_search - result._indexes[0];
}
first_seen_index_last_search = result._indexes[0];
for (var j4 = 0; j4 < result._indexes.len; ++j4)
seen_indexes.add(result._indexes[j4]);
}
var allowSpacesResult = algorithm(
preparedSearch,
target,
/*allowSpaces=*/
true
);
if (allowSpacesResult !== NULL && allowSpacesResult.score > score) {
return allowSpacesResult;
}
result.score = score;
var i4 = 0;
for (let index of seen_indexes)
result._indexes[i4++] = index;
result._indexes.len = i4;
return result;
};
var prepareLowerInfo = (str) => {
var strLen = str.length;
var lower = str.toLowerCase();
var lowerCodes = [];
var bitflags = 0;
var containsSpace = false;
for (var i4 = 0; i4 < strLen; ++i4) {
var lowerCode = lowerCodes[i4] = lower.charCodeAt(i4);
if (lowerCode === 32) {
containsSpace = true;
continue;
}
var bit = lowerCode >= 97 && lowerCode <= 122 ? lowerCode - 97 : lowerCode >= 48 && lowerCode <= 57 ? 26 : lowerCode <= 127 ? 30 : 31;
bitflags |= 1 << bit;
}
return { lowerCodes, bitflags, containsSpace, _lower: lower };
};
var prepareBeginningIndexes = (target) => {
var targetLen = target.length;
var beginningIndexes = [];
var beginningIndexesLen = 0;
var wasUpper = false;
var wasAlphanum = false;
for (var i4 = 0; i4 < targetLen; ++i4) {
var targetCode = target.charCodeAt(i4);
var isUpper = targetCode >= 65 && targetCode <= 90;
var isAlphanum = isUpper || targetCode >= 97 && targetCode <= 122 || targetCode >= 48 && targetCode <= 57;
var isBeginning = isUpper && !wasUpper || !wasAlphanum || !isAlphanum;
wasUpper = isUpper;
wasAlphanum = isAlphanum;
if (isBeginning)
beginningIndexes[beginningIndexesLen++] = i4;
}
return beginningIndexes;
};
var prepareNextBeginningIndexes = (target) => {
var targetLen = target.length;
var beginningIndexes = prepareBeginningIndexes(target);
var nextBeginningIndexes = [];
var lastIsBeginning = beginningIndexes[0];
var lastIsBeginningI = 0;
for (var i4 = 0; i4 < targetLen; ++i4) {
if (lastIsBeginning > i4) {
nextBeginningIndexes[i4] = lastIsBeginning;
} else {
lastIsBeginning = beginningIndexes[++lastIsBeginningI];
nextBeginningIndexes[i4] = lastIsBeginning === void 0 ? targetLen : lastIsBeginning;
}
}
return nextBeginningIndexes;
};
var cleanup = () => {
preparedCache.clear();
preparedSearchCache.clear();
matchesSimple = [];
matchesStrict = [];
};
var preparedCache = /* @__PURE__ */ new Map();
var preparedSearchCache = /* @__PURE__ */ new Map();
var matchesSimple = [];
var matchesStrict = [];
var defaultScoreFn = (a3) => {
var max = INT_MIN;
var len = a3.length;
for (var i4 = 0; i4 < len; ++i4) {
var result = a3[i4];
if (result === NULL)
continue;
var score = result.score;
if (score > max)
max = score;
}
if (max === INT_MIN)
return NULL;
return max;
};
var getValue = (obj, prop) => {
var tmp = obj[prop];
if (tmp !== void 0)
return tmp;
var segs = prop;
if (!Array.isArray(prop))
segs = prop.split(".");
var len = segs.length;
var i4 = -1;
while (obj && ++i4 < len)
obj = obj[segs[i4]];
return obj;
};
var isObj = (x4) => {
return typeof x4 === "object";
};
var INT_MAX = Infinity;
var INT_MIN = -INT_MAX;
var noResults = [];
noResults.total = 0;
var NULL = null;
var fastpriorityqueue = (r3) => {
var e3 = [], o3 = 0, a3 = {}, v3 = (r4) => {
for (var a4 = 0, v4 = e3[a4], c4 = 1; c4 < o3; ) {
var s4 = c4 + 1;
a4 = c4, s4 < o3 && e3[s4].score < e3[c4].score && (a4 = s4), e3[a4 - 1 >> 1] = e3[a4], c4 = 1 + (a4 << 1);
}
for (var f3 = a4 - 1 >> 1; a4 > 0 && v4.score < e3[f3].score; f3 = (a4 = f3) - 1 >> 1)
e3[a4] = e3[f3];
e3[a4] = v4;
};
return a3.add = (r4) => {
var a4 = o3;
e3[o3++] = r4;
for (var v4 = a4 - 1 >> 1; a4 > 0 && r4.score < e3[v4].score; v4 = (a4 = v4) - 1 >> 1)
e3[a4] = e3[v4];
e3[a4] = r4;
}, a3.poll = (r4) => {
if (0 !== o3) {
var a4 = e3[0];
return e3[0] = e3[--o3], v3(), a4;
}
}, a3.peek = (r4) => {
if (0 !== o3)
return e3[0];
}, a3.replaceTop = (r4) => {
e3[0] = r4, v3();
}, a3;
};
var q4 = fastpriorityqueue();
return { "single": single, "go": go, "highlight": highlight, "prepare": prepare, "indexes": indexes, "cleanup": cleanup };
});
}
});
// src/modules/msgreader.js
var require_msgreader = __commonJS({
"src/modules/msgreader.js"(exports, module2) {
DataStream = function(arrayBuffer, byteOffset, endianness) {
this._byteOffset = byteOffset || 0;
if (arrayBuffer instanceof ArrayBuffer) {
this.buffer = arrayBuffer;
} else if (typeof arrayBuffer == "object") {
this.dataView = arrayBuffer;
if (byteOffset) {
this._byteOffset += byteOffset;
}
} else {
this.buffer = new ArrayBuffer(arrayBuffer || 1);
}
this.position = 0;
this.endianness = endianness == null ? DataStream.LITTLE_ENDIAN : endianness;
};
DataStream.prototype = {};
if (Uint8Array.prototype.BYTES_PER_ELEMENT === void 0) {
Uint8Array.prototype.BYTES_PER_ELEMENT = Uint8Array.BYTES_PER_ELEMENT;
Int8Array.prototype.BYTES_PER_ELEMENT = Int8Array.BYTES_PER_ELEMENT;
Uint8ClampedArray.prototype.BYTES_PER_ELEMENT = Uint8ClampedArray.BYTES_PER_ELEMENT;
Uint16Array.prototype.BYTES_PER_ELEMENT = Uint16Array.BYTES_PER_ELEMENT;
Int16Array.prototype.BYTES_PER_ELEMENT = Int16Array.BYTES_PER_ELEMENT;
Uint32Array.prototype.BYTES_PER_ELEMENT = Uint32Array.BYTES_PER_ELEMENT;
Int32Array.prototype.BYTES_PER_ELEMENT = Int32Array.BYTES_PER_ELEMENT;
Float64Array.prototype.BYTES_PER_ELEMENT = Float64Array.BYTES_PER_ELEMENT;
}
DataStream.prototype.save = function(filename) {
var blob = new Blob(this.buffer);
var URL = window.webkitURL || window.URL;
if (URL && URL.createObjectURL) {
var url = URL.createObjectURL(blob);
var a3 = document.createElement("a");
a3.setAttribute("href", url);
a3.setAttribute("download", filename);
a3.click();
URL.revokeObjectURL(url);
} else {
throw "DataStream.save: Can't create object URL.";
}
};
DataStream.BIG_ENDIAN = false;
DataStream.LITTLE_ENDIAN = true;
DataStream.prototype._dynamicSize = true;
Object.defineProperty(DataStream.prototype, "dynamicSize", {
get: function() {
return this._dynamicSize;
},
set: function(v3) {
if (!v3) {
this._trimAlloc();
}
this._dynamicSize = v3;
}
});
DataStream.prototype._byteLength = 0;
Object.defineProperty(DataStream.prototype, "byteLength", {
get: function() {
return this._byteLength - this._byteOffset;
}
});
Object.defineProperty(DataStream.prototype, "buffer", {
get: function() {
this._trimAlloc();
return this._buffer;
},
set: function(v3) {
this._buffer = v3;
this._dataView = new DataView(this._buffer, this._byteOffset);
this._byteLength = this._buffer.byteLength;
}
});
Object.defineProperty(DataStream.prototype, "byteOffset", {
get: function() {
return this._byteOffset;
},
set: function(v3) {
this._byteOffset = v3;
this._dataView = new DataView(this._buffer, this._byteOffset);
this._byteLength = this._buffer.byteLength;
}
});
Object.defineProperty(DataStream.prototype, "dataView", {
get: function() {
return this._dataView;
},
set: function(v3) {
this._byteOffset = v3.byteOffset;
this._buffer = v3.buffer;
this._dataView = new DataView(this._buffer, this._byteOffset);
this._byteLength = this._byteOffset + v3.byteLength;
}
});
DataStream.prototype._realloc = function(extra) {
if (!this._dynamicSize) {
return;
}
var req = this._byteOffset + this.position + extra;
var blen = this._buffer.byteLength;
if (req <= blen) {
if (req > this._byteLength) {
this._byteLength = req;
}
return;
}
if (blen < 1) {
blen = 1;
}
while (req > blen) {
blen *= 2;
}
var buf = new ArrayBuffer(blen);
var src = new Uint8Array(this._buffer);
var dst = new Uint8Array(buf, 0, src.length);
dst.set(src);
this.buffer = buf;
this._byteLength = req;
};
DataStream.prototype._trimAlloc = function() {
if (this._byteLength == this._buffer.byteLength) {
return;
}
var buf = new ArrayBuffer(this._byteLength);
var dst = new Uint8Array(buf);
var src = new Uint8Array(this._buffer, 0, dst.length);
dst.set(src);
this.buffer = buf;
};
DataStream.prototype.seek = function(pos) {
var npos = Math.max(0, Math.min(this.byteLength, pos));
this.position = isNaN(npos) || !isFinite(npos) ? 0 : npos;
};
DataStream.prototype.isEof = function() {
return this.position >= this.byteLength;
};
DataStream.prototype.mapInt32Array = function(length, e3) {
this._realloc(length * 4);
var arr = new Int32Array(this._buffer, this.byteOffset + this.position, length);
DataStream.arrayToNative(arr, e3 == null ? this.endianness : e3);
this.position += length * 4;
return arr;
};
DataStream.prototype.mapInt16Array = function(length, e3) {
this._realloc(length * 2);
var arr = new Int16Array(this._buffer, this.byteOffset + this.position, length);
DataStream.arrayToNative(arr, e3 == null ? this.endianness : e3);
this.position += length * 2;
return arr;
};
DataStream.prototype.mapInt8Array = function(length) {
this._realloc(length * 1);
var arr = new Int8Array(this._buffer, this.byteOffset + this.position, length);
this.position += length * 1;
return arr;
};
DataStream.prototype.mapUint32Array = function(length, e3) {
this._realloc(length * 4);
var arr = new Uint32Array(this._buffer, this.byteOffset + this.position, length);
DataStream.arrayToNative(arr, e3 == null ? this.endianness : e3);
this.position += length * 4;
return arr;
};
DataStream.prototype.mapUint16Array = function(length, e3) {
this._realloc(length * 2);
var arr = new Uint16Array(this._buffer, this.byteOffset + this.position, length);
DataStream.arrayToNative(arr, e3 == null ? this.endianness : e3);
this.position += length * 2;
return arr;
};
DataStream.prototype.mapUint8Array = function(length) {
this._realloc(length * 1);
var arr = new Uint8Array(this._buffer, this.byteOffset + this.position, length);
this.position += length * 1;
return arr;
};
DataStream.prototype.mapFloat64Array = function(length, e3) {
this._realloc(length * 8);
var arr = new Float64Array(this._buffer, this.byteOffset + this.position, length);
DataStream.arrayToNative(arr, e3 == null ? this.endianness : e3);
this.position += length * 8;
return arr;
};
DataStream.prototype.mapFloat32Array = function(length, e3) {
this._realloc(length * 4);
var arr = new Float32Array(this._buffer, this.byteOffset + this.position, length);
DataStream.arrayToNative(arr, e3 == null ? this.endianness : e3);
this.position += length * 4;
return arr;
};
DataStream.prototype.readInt32Array = function(length, e3) {
length = length == null ? this.byteLength - this.position / 4 : length;
var arr = new Int32Array(length);
DataStream.memcpy(arr.buffer, 0, this.buffer, this.byteOffset + this.position, length * arr.BYTES_PER_ELEMENT);
DataStream.arrayToNative(arr, e3 == null ? this.endianness : e3);
this.position += arr.byteLength;
return arr;
};
DataStream.prototype.readInt16Array = function(length, e3) {
length = length == null ? this.byteLength - this.position / 2 : length;
var arr = new Int16Array(length);
DataStream.memcpy(arr.buffer, 0, this.buffer, this.byteOffset + this.position, length * arr.BYTES_PER_ELEMENT);
DataStream.arrayToNative(arr, e3 == null ? this.endianness : e3);
this.position += arr.byteLength;
return arr;
};
DataStream.prototype.readInt8Array = function(length) {
length = length == null ? this.byteLength - this.position : length;
var arr = new Int8Array(length);
DataStream.memcpy(arr.buffer, 0, this.buffer, this.byteOffset + this.position, length * arr.BYTES_PER_ELEMENT);
this.position += arr.byteLength;
return arr;
};
DataStream.prototype.readUint32Array = function(length, e3) {
length = length == null ? this.byteLength - this.position / 4 : length;
var arr = new Uint32Array(length);
DataStream.memcpy(arr.buffer, 0, this.buffer, this.byteOffset + this.position, length * arr.BYTES_PER_ELEMENT);
DataStream.arrayToNative(arr, e3 == null ? this.endianness : e3);
this.position += arr.byteLength;
return arr;
};
DataStream.prototype.readUint16Array = function(length, e3) {
length = length == null ? this.byteLength - this.position / 2 : length;
var arr = new Uint16Array(length);
DataStream.memcpy(arr.buffer, 0, this.buffer, this.byteOffset + this.position, length * arr.BYTES_PER_ELEMENT);
DataStream.arrayToNative(arr, e3 == null ? this.endianness : e3);
this.position += arr.byteLength;
return arr;
};
DataStream.prototype.readUint8Array = function(length) {
length = length == null ? this.byteLength - this.position : length;
var arr = new Uint8Array(length);
DataStream.memcpy(arr.buffer, 0, this.buffer, this.byteOffset + this.position, length * arr.BYTES_PER_ELEMENT);
this.position += arr.byteLength;
return arr;
};
DataStream.prototype.readFloat64Array = function(length, e3) {
length = length == null ? this.byteLength - this.position / 8 : length;
var arr = new Float64Array(length);
DataStream.memcpy(arr.buffer, 0, this.buffer, this.byteOffset + this.position, length * arr.BYTES_PER_ELEMENT);
DataStream.arrayToNative(arr, e3 == null ? this.endianness : e3);
this.position += arr.byteLength;
return arr;
};
DataStream.prototype.readFloat32Array = function(length, e3) {
length = length == null ? this.byteLength - this.position / 4 : length;
var arr = new Float32Array(length);
DataStream.memcpy(arr.buffer, 0, this.buffer, this.byteOffset + this.position, length * arr.BYTES_PER_ELEMENT);
DataStream.arrayToNative(arr, e3 == null ? this.endianness : e3);
this.position += arr.byteLength;
return arr;
};
DataStream.prototype.writeInt32Array = function(arr, e3) {
this._realloc(arr.length * 4);
if (arr instanceof Int32Array && this.byteOffset + this.position % arr.BYTES_PER_ELEMENT == 0) {
DataStream.memcpy(this._buffer, this.byteOffset + this.position, arr.buffer, 0, arr.byteLength);
this.mapInt32Array(arr.length, e3);
} else {
for (var i4 = 0; i4 < arr.length; i4++) {
this.writeInt32(arr[i4], e3);
}
}
};
DataStream.prototype.writeInt16Array = function(arr, e3) {
this._realloc(arr.length * 2);
if (arr instanceof Int16Array && this.byteOffset + this.position % arr.BYTES_PER_ELEMENT == 0) {
DataStream.memcpy(this._buffer, this.byteOffset + this.position, arr.buffer, 0, arr.byteLength);
this.mapInt16Array(arr.length, e3);
} else {
for (var i4 = 0; i4 < arr.length; i4++) {
this.writeInt16(arr[i4], e3);
}
}
};
DataStream.prototype.writeInt8Array = function(arr) {
this._realloc(arr.length * 1);
if (arr instanceof Int8Array && this.byteOffset + this.position % arr.BYTES_PER_ELEMENT == 0) {
DataStream.memcpy(this._buffer, this.byteOffset + this.position, arr.buffer, 0, arr.byteLength);
this.mapInt8Array(arr.length);
} else {
for (var i4 = 0; i4 < arr.length; i4++) {
this.writeInt8(arr[i4]);
}
}
};
DataStream.prototype.writeUint32Array = function(arr, e3) {
this._realloc(arr.length * 4);
if (arr instanceof Uint32Array && this.byteOffset + this.position % arr.BYTES_PER_ELEMENT == 0) {
DataStream.memcpy(this._buffer, this.byteOffset + this.position, arr.buffer, 0, arr.byteLength);
this.mapUint32Array(arr.length, e3);
} else {
for (var i4 = 0; i4 < arr.length; i4++) {
this.writeUint32(arr[i4], e3);
}
}
};
DataStream.prototype.writeUint16Array = function(arr, e3) {
this._realloc(arr.length * 2);
if (arr instanceof Uint16Array && this.byteOffset + this.position % arr.BYTES_PER_ELEMENT == 0) {
DataStream.memcpy(this._buffer, this.byteOffset + this.position, arr.buffer, 0, arr.byteLength);
this.mapUint16Array(arr.length, e3);
} else {
for (var i4 = 0; i4 < arr.length; i4++) {
this.writeUint16(arr[i4], e3);
}
}
};
DataStream.prototype.writeUint8Array = function(arr) {
this._realloc(arr.length * 1);
if (arr instanceof Uint8Array && this.byteOffset + this.position % arr.BYTES_PER_ELEMENT == 0) {
DataStream.memcpy(this._buffer, this.byteOffset + this.position, arr.buffer, 0, arr.byteLength);
this.mapUint8Array(arr.length);
} else {
for (var i4 = 0; i4 < arr.length; i4++) {
this.writeUint8(arr[i4]);
}
}
};
DataStream.prototype.writeFloat64Array = function(arr, e3) {
this._realloc(arr.length * 8);
if (arr instanceof Float64Array && this.byteOffset + this.position % arr.BYTES_PER_ELEMENT == 0) {
DataStream.memcpy(this._buffer, this.byteOffset + this.position, arr.buffer, 0, arr.byteLength);
this.mapFloat64Array(arr.length, e3);
} else {
for (var i4 = 0; i4 < arr.length; i4++) {
this.writeFloat64(arr[i4], e3);
}
}
};
DataStream.prototype.writeFloat32Array = function(arr, e3) {
this._realloc(arr.length * 4);
if (arr instanceof Float32Array && this.byteOffset + this.position % arr.BYTES_PER_ELEMENT == 0) {
DataStream.memcpy(this._buffer, this.byteOffset + this.position, arr.buffer, 0, arr.byteLength);
this.mapFloat32Array(arr.length, e3);
} else {
for (var i4 = 0; i4 < arr.length; i4++) {
this.writeFloat32(arr[i4], e3);
}
}
};
DataStream.prototype.readInt32 = function(e3) {
var v3 = this._dataView.getInt32(this.position, e3 == null ? this.endianness : e3);
this.position += 4;
return v3;
};
DataStream.prototype.readInt = function(offset) {
this.seek(offset);
return this.readInt32();
};
DataStream.prototype.readInt16 = function(e3) {
var v3 = this._dataView.getInt16(this.position, e3 == null ? this.endianness : e3);
this.position += 2;
return v3;
};
DataStream.prototype.readShort = function(offset) {
this.seek(offset);
return this.readInt16();
};
DataStream.prototype.readInt8 = function() {
var v3 = this._dataView.getInt8(this.position);
this.position += 1;
return v3;
};
DataStream.prototype.readByte = function(offset) {
this.seek(offset);
return this.readInt8();
};
DataStream.prototype.readUint32 = function(e3) {
var v3 = this._dataView.getUint32(this.position, e3 == null ? this.endianness : e3);
this.position += 4;
return v3;
};
DataStream.prototype.readUint16 = function(e3) {
var v3 = this._dataView.getUint16(this.position, e3 == null ? this.endianness : e3);
this.position += 2;
return v3;
};
DataStream.prototype.readUint8 = function() {
var v3 = this._dataView.getUint8(this.position);
this.position += 1;
return v3;
};
DataStream.prototype.readFloat32 = function(e3) {
var v3 = this._dataView.getFloat32(this.position, e3 == null ? this.endianness : e3);
this.position += 4;
return v3;
};
DataStream.prototype.readFloat64 = function(e3) {
var v3 = this._dataView.getFloat64(this.position, e3 == null ? this.endianness : e3);
this.position += 8;
return v3;
};
DataStream.prototype.writeInt32 = function(v3, e3) {
this._realloc(4);
this._dataView.setInt32(this.position, v3, e3 == null ? this.endianness : e3);
this.position += 4;
};
DataStream.prototype.writeInt16 = function(v3, e3) {
this._realloc(2);
this._dataView.setInt16(this.position, v3, e3 == null ? this.endianness : e3);
this.position += 2;
};
DataStream.prototype.writeInt8 = function(v3) {
this._realloc(1);
this._dataView.setInt8(this.position, v3);
this.position += 1;
};
DataStream.prototype.writeUint32 = function(v3, e3) {
this._realloc(4);
this._dataView.setUint32(this.position, v3, e3 == null ? this.endianness : e3);
this.position += 4;
};
DataStream.prototype.writeUint16 = function(v3, e3) {
this._realloc(2);
this._dataView.setUint16(this.position, v3, e3 == null ? this.endianness : e3);
this.position += 2;
};
DataStream.prototype.writeUint8 = function(v3) {
this._realloc(1);
this._dataView.setUint8(this.position, v3);
this.position += 1;
};
DataStream.prototype.writeFloat32 = function(v3, e3) {
this._realloc(4);
this._dataView.setFloat32(this.position, v3, e3 == null ? this.endianness : e3);
this.position += 4;
};
DataStream.prototype.writeFloat64 = function(v3, e3) {
this._realloc(8);
this._dataView.setFloat64(this.position, v3, e3 == null ? this.endianness : e3);
this.position += 8;
};
DataStream.endianness = new Int8Array(new Int16Array([1]).buffer)[0] > 0;
DataStream.memcpy = function(dst, dstOffset, src, srcOffset, byteLength) {
var dstU8 = new Uint8Array(dst, dstOffset, byteLength);
var srcU8 = new Uint8Array(src, srcOffset, byteLength);
dstU8.set(srcU8);
};
DataStream.arrayToNative = function(array, arrayIsLittleEndian) {
if (arrayIsLittleEndian == this.endianness) {
return array;
} else {
return this.flipArrayEndianness(array);
}
};
DataStream.nativeToEndian = function(array, littleEndian) {
if (this.endianness == littleEndian) {
return array;
} else {
return this.flipArrayEndianness(array);
}
};
DataStream.flipArrayEndianness = function(array) {
var u8 = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);
for (var i4 = 0; i4 < array.byteLength; i4 += array.BYTES_PER_ELEMENT) {
for (var j4 = i4 + array.BYTES_PER_ELEMENT - 1, k4 = i4; j4 > k4; j4--, k4++) {
var tmp = u8[k4];
u8[k4] = u8[j4];
u8[j4] = tmp;
}
}
return array;
};
DataStream.createStringFromArray = function(array) {
var str = "";
for (var i4 = 0; i4 < array.length; i4++) {
str += String.fromCharCode(array[i4]);
}
return str;
};
DataStream.prototype.failurePosition = 0;
DataStream.prototype.readStruct = function(structDefinition) {
var struct = {}, t3, v3, n3;
var p3 = this.position;
for (var i4 = 0; i4 < structDefinition.length; i4 += 2) {
t3 = structDefinition[i4 + 1];
v3 = this.readType(t3, struct);
if (v3 == null) {
if (this.failurePosition == 0) {
this.failurePosition = this.position;
}
this.position = p3;
return null;
}
struct[structDefinition[i4]] = v3;
}
return struct;
};
DataStream.prototype.readUCS2String = function(length, endianness) {
return DataStream.createStringFromArray(this.readUint16Array(length, endianness));
};
DataStream.prototype.readStringAt = function(offset, length) {
this.seek(offset);
return this.readUCS2String(length);
};
DataStream.prototype.writeUCS2String = function(str, endianness, lengthOverride) {
if (lengthOverride == null) {
lengthOverride = str.length;
}
for (var i4 = 0; i4 < str.length && i4 < lengthOverride; i4++) {
this.writeUint16(str.charCodeAt(i4), endianness);
}
for (; i4 < lengthOverride; i4++) {
this.writeUint16(0);
}
};
DataStream.prototype.readString = function(length, encoding) {
if (encoding == null || encoding == "ASCII") {
return DataStream.createStringFromArray(
this.mapUint8Array(length == null ? this.byteLength - this.position : length)
);
} else {
return new TextDecoder(encoding).decode(this.mapUint8Array(length));
}
};
DataStream.prototype.writeString = function(s4, encoding, length) {
if (encoding == null || encoding == "ASCII") {
if (length != null) {
var i4 = 0;
var len = Math.min(s4.length, length);
for (i4 = 0; i4 < len; i4++) {
this.writeUint8(s4.charCodeAt(i4));
}
for (; i4 < length; i4++) {
this.writeUint8(0);
}
} else {
for (var i4 = 0; i4 < s4.length; i4++) {
this.writeUint8(s4.charCodeAt(i4));
}
}
} else {
this.writeUint8Array(new TextEncoder(encoding).encode(s4.substring(0, length)));
}
};
DataStream.prototype.readCString = function(length) {
var blen = this.byteLength - this.position;
var u8 = new Uint8Array(this._buffer, this._byteOffset + this.position);
var len = blen;
if (length != null) {
len = Math.min(length, blen);
}
for (var i4 = 0; i4 < len && u8[i4] != 0; i4++)
;
var s4 = DataStream.createStringFromArray(this.mapUint8Array(i4));
if (length != null) {
this.position += len - i4;
} else if (i4 != blen) {
this.position += 1;
}
return s4;
};
DataStream.prototype.writeCString = function(s4, length) {
if (length != null) {
var i4 = 0;
var len = Math.min(s4.length, length);
for (i4 = 0; i4 < len; i4++) {
this.writeUint8(s4.charCodeAt(i4));
}
for (; i4 < length; i4++) {
this.writeUint8(0);
}
} else {
for (var i4 = 0; i4 < s4.length; i4++) {
this.writeUint8(s4.charCodeAt(i4));
}
this.writeUint8(0);
}
};
DataStream.prototype.readType = function(t3, struct) {
if (typeof t3 == "function") {
return t3(this, struct);
} else if (typeof t3 == "object" && !(t3 instanceof Array)) {
return t3.get(this, struct);
} else if (t3 instanceof Array && t3.length != 3) {
return this.readStruct(t3, struct);
}
var v3 = null;
var lengthOverride = null;
var charset = "ASCII";
var pos = this.position;
var len;
if (typeof t3 == "string" && /:/.test(t3)) {
var tp = t3.split(":");
t3 = tp[0];
len = tp[1];
if (struct[len] != null) {
lengthOverride = parseInt(struct[len]);
} else {
lengthOverride = parseInt(tp[1]);
}
}
if (typeof t3 == "string" && /,/.test(t3)) {
var tp = t3.split(",");
t3 = tp[0];
charset = parseInt(tp[1]);
}
switch (t3) {
case "uint8":
v3 = this.readUint8();
break;
case "int8":
v3 = this.readInt8();
break;
case "uint16":
v3 = this.readUint16(this.endianness);
break;
case "int16":
v3 = this.readInt16(this.endianness);
break;
case "uint32":
v3 = this.readUint32(this.endianness);
break;
case "int32":
v3 = this.readInt32(this.endianness);
break;
case "float32":
v3 = this.readFloat32(this.endianness);
break;
case "float64":
v3 = this.readFloat64(this.endianness);
break;
case "uint16be":
v3 = this.readUint16(DataStream.BIG_ENDIAN);
break;
case "int16be":
v3 = this.readInt16(DataStream.BIG_ENDIAN);
break;
case "uint32be":
v3 = this.readUint32(DataStream.BIG_ENDIAN);
break;
case "int32be":
v3 = this.readInt32(DataStream.BIG_ENDIAN);
break;
case "float32be":
v3 = this.readFloat32(DataStream.BIG_ENDIAN);
break;
case "float64be":
v3 = this.readFloat64(DataStream.BIG_ENDIAN);
break;
case "uint16le":
v3 = this.readUint16(DataStream.LITTLE_ENDIAN);
break;
case "int16le":
v3 = this.readInt16(DataStream.LITTLE_ENDIAN);
break;
case "uint32le":
v3 = this.readUint32(DataStream.LITTLE_ENDIAN);
break;
case "int32le":
v3 = this.readInt32(DataStream.LITTLE_ENDIAN);
break;
case "float32le":
v3 = this.readFloat32(DataStream.LITTLE_ENDIAN);
break;
case "float64le":
v3 = this.readFloat64(DataStream.LITTLE_ENDIAN);
break;
case "cstring":
v3 = this.readCString(lengthOverride);
break;
case "string":
v3 = this.readString(lengthOverride, charset);
break;
case "u16string":
v3 = this.readUCS2String(lengthOverride, this.endianness);
break;
case "u16stringle":
v3 = this.readUCS2String(lengthOverride, DataStream.LITTLE_ENDIAN);
break;
case "u16stringbe":
v3 = this.readUCS2String(lengthOverride, DataStream.BIG_ENDIAN);
break;
default:
if (t3.length == 3) {
var ta = t3[1];
var len = t3[2];
var length = 0;
if (typeof len == "function") {
length = len(struct, this, t3);
} else if (typeof len == "string" && struct[len] != null) {
length = parseInt(struct[len]);
} else {
length = parseInt(len);
}
if (typeof ta == "string") {
var tap = ta.replace(/(le|be)$/, "");
var endianness = null;
if (/le$/.test(ta)) {
endianness = DataStream.LITTLE_ENDIAN;
} else if (/be$/.test(ta)) {
endianness = DataStream.BIG_ENDIAN;
}
if (len == "*") {
length = null;
}
switch (tap) {
case "uint8":
v3 = this.readUint8Array(length);
break;
case "uint16":
v3 = this.readUint16Array(length, endianness);
break;
case "uint32":
v3 = this.readUint32Array(length, endianness);
break;
case "int8":
v3 = this.readInt8Array(length);
break;
case "int16":
v3 = this.readInt16Array(length, endianness);
break;
case "int32":
v3 = this.readInt32Array(length, endianness);
break;
case "float32":
v3 = this.readFloat32Array(length, endianness);
break;
case "float64":
v3 = this.readFloat64Array(length, endianness);
break;
case "cstring":
case "utf16string":
case "string":
if (length == null) {
v3 = [];
while (!this.isEof()) {
var u3 = this.readType(ta, struct);
if (u3 == null)
break;
v3.push(u3);
}
} else {
v3 = new Array(length);
for (var i4 = 0; i4 < length; i4++) {
v3[i4] = this.readType(ta, struct);
}
}
break;
}
} else {
if (len == "*") {
v3 = [];
this.buffer;
while (true) {
var p3 = this.position;
try {
var o3 = this.readType(ta, struct);
if (o3 == null) {
this.position = p3;
break;
}
v3.push(o3);
} catch (e3) {
this.position = p3;
break;
}
}
} else {
v3 = new Array(length);
for (var i4 = 0; i4 < length; i4++) {
var u3 = this.readType(ta, struct);
if (u3 == null)
return null;
v3[i4] = u3;
}
}
}
break;
}
}
if (lengthOverride != null) {
this.position = pos + lengthOverride;
}
return v3;
};
DataStream.prototype.writeStruct = function(structDefinition, struct) {
for (var i4 = 0; i4 < structDefinition.length; i4 += 2) {
var t3 = structDefinition[i4 + 1];
this.writeType(t3, struct[structDefinition[i4]], struct);
}
};
DataStream.prototype.writeType = function(t3, v3, struct) {
if (typeof t3 == "function") {
return t3(this, v3);
} else if (typeof t3 == "object" && !(t3 instanceof Array)) {
return t3.set(this, v3, struct);
}
var lengthOverride = null;
var charset = "ASCII";
var pos = this.position;
if (typeof t3 == "string" && /:/.test(t3)) {
var tp = t3.split(":");
t3 = tp[0];
lengthOverride = parseInt(tp[1]);
}
if (typeof t3 == "string" && /,/.test(t3)) {
var tp = t3.split(",");
t3 = tp[0];
charset = parseInt(tp[1]);
}
switch (t3) {
case "uint8":
this.writeUint8(v3);
break;
case "int8":
this.writeInt8(v3);
break;
case "uint16":
this.writeUint16(v3, this.endianness);
break;
case "int16":
this.writeInt16(v3, this.endianness);
break;
case "uint32":
this.writeUint32(v3, this.endianness);
break;
case "int32":
this.writeInt32(v3, this.endianness);
break;
case "float32":
this.writeFloat32(v3, this.endianness);
break;
case "float64":
this.writeFloat64(v3, this.endianness);
break;
case "uint16be":
this.writeUint16(v3, DataStream.BIG_ENDIAN);
break;
case "int16be":
this.writeInt16(v3, DataStream.BIG_ENDIAN);
break;
case "uint32be":
this.writeUint32(v3, DataStream.BIG_ENDIAN);
break;
case "int32be":
this.writeInt32(v3, DataStream.BIG_ENDIAN);
break;
case "float32be":
this.writeFloat32(v3, DataStream.BIG_ENDIAN);
break;
case "float64be":
this.writeFloat64(v3, DataStream.BIG_ENDIAN);
break;
case "uint16le":
this.writeUint16(v3, DataStream.LITTLE_ENDIAN);
break;
case "int16le":
this.writeInt16(v3, DataStream.LITTLE_ENDIAN);
break;
case "uint32le":
this.writeUint32(v3, DataStream.LITTLE_ENDIAN);
break;
case "int32le":
this.writeInt32(v3, DataStream.LITTLE_ENDIAN);
break;
case "float32le":
this.writeFloat32(v3, DataStream.LITTLE_ENDIAN);
break;
case "float64le":
this.writeFloat64(v3, DataStream.LITTLE_ENDIAN);
break;
case "cstring":
this.writeCString(v3, lengthOverride);
break;
case "string":
this.writeString(v3, charset, lengthOverride);
break;
case "u16string":
this.writeUCS2String(v3, this.endianness, lengthOverride);
break;
case "u16stringle":
this.writeUCS2String(v3, DataStream.LITTLE_ENDIAN, lengthOverride);
break;
case "u16stringbe":
this.writeUCS2String(v3, DataStream.BIG_ENDIAN, lengthOverride);
break;
default:
if (t3.length == 3) {
var ta = t3[1];
for (var i4 = 0; i4 < v3.length; i4++) {
this.writeType(ta, v3[i4]);
}
break;
} else {
this.writeStruct(t3, v3);
break;
}
}
if (lengthOverride != null) {
this.position = pos;
this._realloc(lengthOverride);
this.position = pos + lengthOverride;
}
};
if (typeof define === "function" && define.amd) {
define("DataStream", [], function() {
return DataStream;
});
}
var CONST = {
FILE_HEADER: uInt2int([208, 207, 17, 224, 161, 177, 26, 225]),
MSG: {
UNUSED_BLOCK: -1,
END_OF_CHAIN: -2,
S_BIG_BLOCK_SIZE: 512,
S_BIG_BLOCK_MARK: 9,
L_BIG_BLOCK_SIZE: 4096,
L_BIG_BLOCK_MARK: 12,
SMALL_BLOCK_SIZE: 64,
BIG_BLOCK_MIN_DOC_SIZE: 4096,
HEADER: {
PROPERTY_START_OFFSET: 48,
BAT_START_OFFSET: 76,
BAT_COUNT_OFFSET: 44,
SBAT_START_OFFSET: 60,
SBAT_COUNT_OFFSET: 64,
XBAT_START_OFFSET: 68,
XBAT_COUNT_OFFSET: 72
},
PROP: {
NO_INDEX: -1,
PROPERTY_SIZE: 128,
NAME_SIZE_OFFSET: 64,
MAX_NAME_LENGTH: (
/*NAME_SIZE_OFFSET*/
64 / 2 - 1
),
TYPE_OFFSET: 66,
PREVIOUS_PROPERTY_OFFSET: 68,
NEXT_PROPERTY_OFFSET: 72,
CHILD_PROPERTY_OFFSET: 76,
START_BLOCK_OFFSET: 116,
SIZE_OFFSET: 120,
TYPE_ENUM: {
DIRECTORY: 1,
DOCUMENT: 2,
ROOT: 5
}
},
FIELD: {
PREFIX: {
ATTACHMENT: "__attach_version1.0",
RECIPIENT: "__recip_version1.0",
DOCUMENT: "__substg1."
},
// example (use fields as needed)
NAME_MAPPING: {
// email specific
"0037": "subject",
"0c1a": "senderName",
"5d02": "senderEmail",
1e3: "body",
1013: "bodyHTML",
"007d": "headers",
// attachment specific
3703: "extension",
3704: "fileNameShort",
3707: "fileName",
3712: "pidContentId",
"370e": "mimeType",
// recipient specific
3001: "name",
"39fe": "email"
},
CLASS_MAPPING: {
ATTACHMENT_DATA: "3701"
},
TYPE_MAPPING: {
"001e": "string",
"001f": "unicode",
"0102": "binary"
},
DIR_TYPE: {
INNER_MSG: "000d"
}
}
}
};
function arraysEqual(a3, b3) {
if (a3 === b3)
return true;
if (a3 == null || b3 == null)
return false;
if (a3.length != b3.length)
return false;
for (var i4 = 0; i4 < a3.length; i4++) {
if (a3[i4] !== b3[i4])
return false;
}
return true;
}
function uInt2int(data) {
var result = new Array(data.length);
for (var i4 = 0; i4 < data.length; i4++) {
result[i4] = data[i4] << 24 >> 24;
}
return result;
}
function isMSGFile(ds) {
ds.seek(0);
return arraysEqual(CONST.FILE_HEADER, ds.readInt8Array(CONST.FILE_HEADER.length));
}
function getBlockOffsetAt(msgData, offset) {
return (offset + 1) * msgData.bigBlockSize;
}
function getBlockAt(ds, msgData, offset) {
var startOffset = getBlockOffsetAt(msgData, offset);
ds.seek(startOffset);
return ds.readInt32Array(msgData.bigBlockLength);
}
function getNextBlockInner(ds, msgData, offset, blockOffsetData) {
var currentBlock = Math.floor(offset / msgData.bigBlockLength);
var currentBlockIndex = offset % msgData.bigBlockLength;
var startBlockOffset = blockOffsetData[currentBlock];
return getBlockAt(ds, msgData, startBlockOffset)[currentBlockIndex];
}
function getNextBlock(ds, msgData, offset) {
return getNextBlockInner(ds, msgData, offset, msgData.batData);
}
function getNextBlockSmall(ds, msgData, offset) {
return getNextBlockInner(ds, msgData, offset, msgData.sbatData);
}
function parseMsgData(ds) {
var msgData = headerData(ds);
msgData.batData = batData(ds, msgData);
msgData.sbatData = sbatData(ds, msgData);
if (msgData.xbatCount > 0) {
xbatData(ds, msgData);
}
msgData.propertyData = propertyData(ds, msgData);
msgData.fieldsData = fieldsData(ds, msgData);
return msgData;
}
function headerData(ds) {
var headerData2 = {};
headerData2.bigBlockSize = ds.readByte(
/*const position*/
30
) == CONST.MSG.L_BIG_BLOCK_MARK ? CONST.MSG.L_BIG_BLOCK_SIZE : CONST.MSG.S_BIG_BLOCK_SIZE;
headerData2.bigBlockLength = headerData2.bigBlockSize / 4;
headerData2.xBlockLength = headerData2.bigBlockLength - 1;
headerData2.batCount = ds.readInt(CONST.MSG.HEADER.BAT_COUNT_OFFSET);
headerData2.propertyStart = ds.readInt(CONST.MSG.HEADER.PROPERTY_START_OFFSET);
headerData2.sbatStart = ds.readInt(CONST.MSG.HEADER.SBAT_START_OFFSET);
headerData2.sbatCount = ds.readInt(CONST.MSG.HEADER.SBAT_COUNT_OFFSET);
headerData2.xbatStart = ds.readInt(CONST.MSG.HEADER.XBAT_START_OFFSET);
headerData2.xbatCount = ds.readInt(CONST.MSG.HEADER.XBAT_COUNT_OFFSET);
return headerData2;
}
function batCountInHeader(msgData) {
var maxBatsInHeader = (CONST.MSG.S_BIG_BLOCK_SIZE - CONST.MSG.HEADER.BAT_START_OFFSET) / 4;
return Math.min(msgData.batCount, maxBatsInHeader);
}
function batData(ds, msgData) {
var result = new Array(batCountInHeader(msgData));
ds.seek(CONST.MSG.HEADER.BAT_START_OFFSET);
for (var i4 = 0; i4 < result.length; i4++) {
result[i4] = ds.readInt32();
}
return result;
}
function sbatData(ds, msgData) {
var result = [];
var startIndex = msgData.sbatStart;
for (var i4 = 0; i4 < msgData.sbatCount && startIndex != CONST.MSG.END_OF_CHAIN; i4++) {
result.push(startIndex);
startIndex = getNextBlock(ds, msgData, startIndex);
}
return result;
}
function xbatData(ds, msgData) {
var batCount = batCountInHeader(msgData);
var batCountTotal = msgData.batCount;
var remainingBlocks = batCountTotal - batCount;
var nextBlockAt = msgData.xbatStart;
for (var i4 = 0; i4 < msgData.xbatCount; i4++) {
var xBatBlock = getBlockAt(ds, msgData, nextBlockAt);
nextBlockAt = xBatBlock[msgData.xBlockLength];
var blocksToProcess = Math.min(remainingBlocks, msgData.xBlockLength);
for (var j4 = 0; j4 < blocksToProcess; j4++) {
var blockStartAt = xBatBlock[j4];
if (blockStartAt == CONST.MSG.UNUSED_BLOCK || blockStartAt == CONST.MSG.END_OF_CHAIN) {
break;
}
msgData.batData.push(blockStartAt);
}
remainingBlocks -= blocksToProcess;
}
}
function propertyData(ds, msgData) {
var props2 = [];
var currentOffset = msgData.propertyStart;
while (currentOffset != CONST.MSG.END_OF_CHAIN) {
convertBlockToProperties(ds, msgData, currentOffset, props2);
currentOffset = getNextBlock(ds, msgData, currentOffset);
}
createPropertyHierarchy(
props2,
/*property with index 0 (zero) always as root*/
props2[0]
);
return props2;
}
function convertName(ds, offset) {
var nameLength = ds.readShort(offset + CONST.MSG.PROP.NAME_SIZE_OFFSET);
if (nameLength < 1) {
return "";
} else {
return ds.readStringAt(offset, nameLength / 2);
}
}
function convertProperty(ds, index, offset) {
return {
index,
type: ds.readByte(offset + CONST.MSG.PROP.TYPE_OFFSET),
name: convertName(ds, offset),
// hierarchy
previousProperty: ds.readInt(offset + CONST.MSG.PROP.PREVIOUS_PROPERTY_OFFSET),
nextProperty: ds.readInt(offset + CONST.MSG.PROP.NEXT_PROPERTY_OFFSET),
childProperty: ds.readInt(offset + CONST.MSG.PROP.CHILD_PROPERTY_OFFSET),
// data offset
startBlock: ds.readInt(offset + CONST.MSG.PROP.START_BLOCK_OFFSET),
sizeBlock: ds.readInt(offset + CONST.MSG.PROP.SIZE_OFFSET)
};
}
function convertBlockToProperties(ds, msgData, propertyBlockOffset, props2) {
var propertyCount = msgData.bigBlockSize / CONST.MSG.PROP.PROPERTY_SIZE;
var propertyOffset = getBlockOffsetAt(msgData, propertyBlockOffset);
for (var i4 = 0; i4 < propertyCount; i4++) {
var propertyType = ds.readByte(propertyOffset + CONST.MSG.PROP.TYPE_OFFSET);
switch (propertyType) {
case CONST.MSG.PROP.TYPE_ENUM.ROOT:
case CONST.MSG.PROP.TYPE_ENUM.DIRECTORY:
case CONST.MSG.PROP.TYPE_ENUM.DOCUMENT:
props2.push(convertProperty(ds, props2.length, propertyOffset));
break;
default:
props2.push(null);
}
propertyOffset += CONST.MSG.PROP.PROPERTY_SIZE;
}
}
function createPropertyHierarchy(props2, nodeProperty) {
if (nodeProperty.childProperty == CONST.MSG.PROP.NO_INDEX) {
return;
}
nodeProperty.children = [];
var children = [nodeProperty.childProperty];
while (children.length != 0) {
var currentIndex = children.shift();
var current = props2[currentIndex];
if (current == null) {
continue;
}
nodeProperty.children.push(currentIndex);
if (current.type == CONST.MSG.PROP.TYPE_ENUM.DIRECTORY) {
createPropertyHierarchy(props2, current);
}
if (current.previousProperty != CONST.MSG.PROP.NO_INDEX) {
children.push(current.previousProperty);
}
if (current.nextProperty != CONST.MSG.PROP.NO_INDEX) {
children.push(current.nextProperty);
}
}
}
function fieldsData(ds, msgData) {
var fields = {
attachments: [],
recipients: []
};
fieldsDataDir(ds, msgData, msgData.propertyData[0], fields);
return fields;
}
function fieldsDataDir(ds, msgData, dirProperty, fields) {
if (dirProperty.children && dirProperty.children.length > 0) {
for (var i4 = 0; i4 < dirProperty.children.length; i4++) {
var childProperty = msgData.propertyData[dirProperty.children[i4]];
if (childProperty.type == CONST.MSG.PROP.TYPE_ENUM.DIRECTORY) {
fieldsDataDirInner(ds, msgData, childProperty, fields);
} else if (childProperty.type == CONST.MSG.PROP.TYPE_ENUM.DOCUMENT && childProperty.name.indexOf(CONST.MSG.FIELD.PREFIX.DOCUMENT) == 0) {
fieldsDataDocument(ds, msgData, childProperty, fields);
}
}
}
}
function fieldsDataDirInner(ds, msgData, dirProperty, fields) {
if (dirProperty.name.indexOf(CONST.MSG.FIELD.PREFIX.ATTACHMENT) == 0) {
var attachmentField = {};
fields.attachments.push(attachmentField);
fieldsDataDir(ds, msgData, dirProperty, attachmentField);
} else if (dirProperty.name.indexOf(CONST.MSG.FIELD.PREFIX.RECIPIENT) == 0) {
var recipientField = {};
fields.recipients.push(recipientField);
fieldsDataDir(ds, msgData, dirProperty, recipientField);
} else {
var childFieldType = getFieldType(dirProperty);
if (childFieldType != CONST.MSG.FIELD.DIR_TYPE.INNER_MSG) {
fieldsDataDir(ds, msgData, dirProperty, fields);
} else {
fields.innerMsgContent = true;
}
}
}
function isAddPropertyValue(fieldName, fieldTypeMapped) {
return fieldName !== "body" || fieldTypeMapped !== "binary";
}
function fieldsDataDocument(ds, msgData, documentProperty, fields) {
var value = documentProperty.name.substring(12).toLowerCase();
var fieldClass = value.substring(0, 4);
var fieldType = value.substring(4, 8);
var fieldName = CONST.MSG.FIELD.NAME_MAPPING[fieldClass];
var fieldTypeMapped = CONST.MSG.FIELD.TYPE_MAPPING[fieldType];
if (fieldName) {
var fieldValue = getFieldValue(ds, msgData, documentProperty, fieldTypeMapped);
if (isAddPropertyValue(fieldName, fieldTypeMapped)) {
fields[fieldName] = applyValueConverter(fieldName, fieldTypeMapped, fieldValue);
}
}
if (fieldClass == CONST.MSG.FIELD.CLASS_MAPPING.ATTACHMENT_DATA) {
fields["dataId"] = documentProperty.index;
fields["contentLength"] = documentProperty.sizeBlock;
}
}
function applyValueConverter(fieldName, fieldTypeMapped, fieldValue) {
if (fieldTypeMapped === "binary" && fieldName === "bodyHTML") {
return convertUint8ArrayToString(fieldValue);
}
return fieldValue;
}
function getFieldType(fieldProperty) {
var value = fieldProperty.name.substring(12).toLowerCase();
return value.substring(4, 8);
}
var extractorFieldValue = {
sbat: {
extractor: function extractDataViaSbat(ds, msgData, fieldProperty, dataTypeExtractor) {
var chain = getChainByBlockSmall(ds, msgData, fieldProperty);
if (chain.length == 1) {
return readDataByBlockSmall(
ds,
msgData,
fieldProperty.startBlock,
fieldProperty.sizeBlock,
dataTypeExtractor
);
} else if (chain.length > 1) {
return readChainDataByBlockSmall(ds, msgData, fieldProperty, chain, dataTypeExtractor);
}
return null;
},
dataType: {
string: function extractBatString(ds, msgData, blockStartOffset, bigBlockOffset, blockSize) {
ds.seek(blockStartOffset + bigBlockOffset);
return ds.readString(blockSize);
},
unicode: function extractBatUnicode(ds, msgData, blockStartOffset, bigBlockOffset, blockSize) {
ds.seek(blockStartOffset + bigBlockOffset);
return ds.readUCS2String(blockSize / 2);
},
binary: function extractBatBinary(ds, msgData, blockStartOffset, bigBlockOffset, blockSize) {
ds.seek(blockStartOffset + bigBlockOffset);
return ds.readUint8Array(blockSize);
}
}
},
bat: {
extractor: function extractDataViaBat(ds, msgData, fieldProperty, dataTypeExtractor) {
var offset = getBlockOffsetAt(msgData, fieldProperty.startBlock);
ds.seek(offset);
return dataTypeExtractor(ds, fieldProperty);
},
dataType: {
string: function extractSbatString(ds, fieldProperty) {
return ds.readString(fieldProperty.sizeBlock);
},
unicode: function extractSbatUnicode(ds, fieldProperty) {
return ds.readUCS2String(fieldProperty.sizeBlock / 2);
},
binary: function extractSbatBinary(ds, fieldProperty) {
return ds.readUint8Array(fieldProperty.sizeBlock);
}
}
}
};
function readDataByBlockSmall(ds, msgData, startBlock, blockSize, dataTypeExtractor) {
var byteOffset = startBlock * CONST.MSG.SMALL_BLOCK_SIZE;
var bigBlockNumber = Math.floor(byteOffset / msgData.bigBlockSize);
var bigBlockOffset = byteOffset % msgData.bigBlockSize;
var rootProp = msgData.propertyData[0];
var nextBlock = rootProp.startBlock;
for (var i4 = 0; i4 < bigBlockNumber; i4++) {
nextBlock = getNextBlock(ds, msgData, nextBlock);
}
var blockStartOffset = getBlockOffsetAt(msgData, nextBlock);
return dataTypeExtractor(ds, msgData, blockStartOffset, bigBlockOffset, blockSize);
}
function readChainDataByBlockSmall(ds, msgData, fieldProperty, chain, dataTypeExtractor) {
var resultData = new Int8Array(fieldProperty.sizeBlock);
for (var i4 = 0, idx = 0; i4 < chain.length; i4++) {
var data = readDataByBlockSmall(
ds,
msgData,
chain[i4],
CONST.MSG.SMALL_BLOCK_SIZE,
extractorFieldValue.sbat.dataType.binary
);
for (var j4 = 0; j4 < data.length; j4++) {
resultData[idx++] = data[j4];
}
}
var localDs = new DataStream(resultData, 0, DataStream.LITTLE_ENDIAN);
return dataTypeExtractor(localDs, msgData, 0, 0, fieldProperty.sizeBlock);
}
function getChainByBlockSmall(ds, msgData, fieldProperty) {
var blockChain = [];
var nextBlockSmall = fieldProperty.startBlock;
while (nextBlockSmall != CONST.MSG.END_OF_CHAIN) {
blockChain.push(nextBlockSmall);
nextBlockSmall = getNextBlockSmall(ds, msgData, nextBlockSmall);
}
return blockChain;
}
function getFieldValue(ds, msgData, fieldProperty, typeMapped) {
var value = null;
var valueExtractor = fieldProperty.sizeBlock < CONST.MSG.BIG_BLOCK_MIN_DOC_SIZE ? extractorFieldValue.sbat : extractorFieldValue.bat;
var dataTypeExtractor = valueExtractor.dataType[typeMapped];
if (dataTypeExtractor) {
value = valueExtractor.extractor(ds, msgData, fieldProperty, dataTypeExtractor);
}
return value;
}
function convertUint8ArrayToString(uint8ArraValue) {
return new TextDecoder("utf-8").decode(uint8ArraValue);
}
var MSGReader2 = function(arrayBuffer) {
this.ds = new DataStream(arrayBuffer, 0, DataStream.LITTLE_ENDIAN);
};
MSGReader2.prototype = {
/**
Converts bytes to fields information
@return {Object} The fields data for MSG file
*/
getFileData: function() {
if (!isMSGFile(this.ds)) {
return { error: "Unsupported file type!" };
}
if (this.fileData == null) {
this.fileData = parseMsgData(this.ds);
}
return this.fileData.fieldsData;
},
/**
Reads an attachment content by key/ID
@return {Object} The attachment for specific attachment key
*/
getAttachment: function(attach) {
var attachData = typeof attach === "number" ? this.fileData.fieldsData.attachments[attach] : attach;
var fieldProperty = this.fileData.propertyData[attachData.dataId];
var fieldTypeMapped = CONST.MSG.FIELD.TYPE_MAPPING[getFieldType(fieldProperty)];
var fieldData = getFieldValue(this.ds, this.fileData, fieldProperty, fieldTypeMapped);
return { fileName: attachData.fileName, content: fieldData };
}
};
module2.exports = {
MSGReader: MSGReader2,
DataStream
};
}
});
// node_modules/@sinonjs/text-encoding/lib/encoding-indexes.js
var require_encoding_indexes = __commonJS({
"node_modules/@sinonjs/text-encoding/lib/encoding-indexes.js"(exports, module2) {
(function(global2) {
"use strict";
if (typeof module2 !== "undefined" && module2.exports) {
module2.exports = global2;
}
global2["encoding-indexes"] = {
"big5": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 17392, 19506, 17923, 17830, 17784, 160359, 19831, 17843, 162993, 19682, 163013, 15253, 18230, 18244, 19527, 19520, 148159, 144919, 160594, 159371, 159954, 19543, 172881, 18255, 17882, 19589, 162924, 19719, 19108, 18081, 158499, 29221, 154196, 137827, 146950, 147297, 26189, 22267, null, 32149, 22813, 166841, 15860, 38708, 162799, 23515, 138590, 23204, 13861, 171696, 23249, 23479, 23804, 26478, 34195, 170309, 29793, 29853, 14453, 138579, 145054, 155681, 16108, 153822, 15093, 31484, 40855, 147809, 166157, 143850, 133770, 143966, 17162, 33924, 40854, 37935, 18736, 34323, 22678, 38730, 37400, 31184, 31282, 26208, 27177, 34973, 29772, 31685, 26498, 31276, 21071, 36934, 13542, 29636, 155065, 29894, 40903, 22451, 18735, 21580, 16689, 145038, 22552, 31346, 162661, 35727, 18094, 159368, 16769, 155033, 31662, 140476, 40904, 140481, 140489, 140492, 40905, 34052, 144827, 16564, 40906, 17633, 175615, 25281, 28782, 40907, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 12736, 12737, 12738, 12739, 12740, 131340, 12741, 131281, 131277, 12742, 12743, 131275, 139240, 12744, 131274, 12745, 12746, 12747, 12748, 131342, 12749, 12750, 256, 193, 461, 192, 274, 201, 282, 200, 332, 211, 465, 210, null, 7870, null, 7872, 202, 257, 225, 462, 224, 593, 275, 233, 283, 232, 299, 237, 464, 236, 333, 243, 466, 242, 363, 250, 468, 249, 470, 472, 474, 476, 252, null, 7871, null, 7873, 234, 609, 9178, 9179, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 172969, 135493, null, 25866, null, null, 20029, 28381, 40270, 37343, null, null, 161589, 25745, 20250, 20264, 20392, 20822, 20852, 20892, 20964, 21153, 21160, 21307, 21326, 21457, 21464, 22242, 22768, 22788, 22791, 22834, 22836, 23398, 23454, 23455, 23706, 24198, 24635, 25993, 26622, 26628, 26725, 27982, 28860, 30005, 32420, 32428, 32442, 32455, 32463, 32479, 32518, 32567, 33402, 33487, 33647, 35270, 35774, 35810, 36710, 36711, 36718, 29713, 31996, 32205, 26950, 31433, 21031, null, null, null, null, 37260, 30904, 37214, 32956, null, 36107, 33014, 133607, null, null, 32927, 40647, 19661, 40393, 40460, 19518, 171510, 159758, 40458, 172339, 13761, null, 28314, 33342, 29977, null, 18705, 39532, 39567, 40857, 31111, 164972, 138698, 132560, 142054, 20004, 20097, 20096, 20103, 20159, 20203, 20279, 13388, 20413, 15944, 20483, 20616, 13437, 13459, 13477, 20870, 22789, 20955, 20988, 20997, 20105, 21113, 21136, 21287, 13767, 21417, 13649, 21424, 13651, 21442, 21539, 13677, 13682, 13953, 21651, 21667, 21684, 21689, 21712, 21743, 21784, 21795, 21800, 13720, 21823, 13733, 13759, 21975, 13765, 163204, 21797, null, 134210, 134421, 151851, 21904, 142534, 14828, 131905, 36422, 150968, 169189, 16467, 164030, 30586, 142392, 14900, 18389, 164189, 158194, 151018, 25821, 134524, 135092, 134357, 135412, 25741, 36478, 134806, 134155, 135012, 142505, 164438, 148691, null, 134470, 170573, 164073, 18420, 151207, 142530, 39602, 14951, 169460, 16365, 13574, 152263, 169940, 161992, 142660, 40302, 38933, null, 17369, 155813, 25780, 21731, 142668, 142282, 135287, 14843, 135279, 157402, 157462, 162208, 25834, 151634, 134211, 36456, 139681, 166732, 132913, null, 18443, 131497, 16378, 22643, 142733, null, 148936, 132348, 155799, 134988, 134550, 21881, 16571, 17338, null, 19124, 141926, 135325, 33194, 39157, 134556, 25465, 14846, 141173, 36288, 22177, 25724, 15939, null, 173569, 134665, 142031, 142537, null, 135368, 145858, 14738, 14854, 164507, 13688, 155209, 139463, 22098, 134961, 142514, 169760, 13500, 27709, 151099, null, null, 161140, 142987, 139784, 173659, 167117, 134778, 134196, 157724, 32659, 135375, 141315, 141625, 13819, 152035, 134796, 135053, 134826, 16275, 134960, 134471, 135503, 134732, null, 134827, 134057, 134472, 135360, 135485, 16377, 140950, 25650, 135085, 144372, 161337, 142286, 134526, 134527, 142417, 142421, 14872, 134808, 135367, 134958, 173618, 158544, 167122, 167321, 167114, 38314, 21708, 33476, 21945, null, 171715, 39974, 39606, 161630, 142830, 28992, 33133, 33004, 23580, 157042, 33076, 14231, 21343, 164029, 37302, 134906, 134671, 134775, 134907, 13789, 151019, 13833, 134358, 22191, 141237, 135369, 134672, 134776, 135288, 135496, 164359, 136277, 134777, 151120, 142756, 23124, 135197, 135198, 135413, 135414, 22428, 134673, 161428, 164557, 135093, 134779, 151934, 14083, 135094, 135552, 152280, 172733, 149978, 137274, 147831, 164476, 22681, 21096, 13850, 153405, 31666, 23400, 18432, 19244, 40743, 18919, 39967, 39821, 154484, 143677, 22011, 13810, 22153, 20008, 22786, 138177, 194680, 38737, 131206, 20059, 20155, 13630, 23587, 24401, 24516, 14586, 25164, 25909, 27514, 27701, 27706, 28780, 29227, 20012, 29357, 149737, 32594, 31035, 31993, 32595, 156266, 13505, null, 156491, 32770, 32896, 157202, 158033, 21341, 34916, 35265, 161970, 35744, 36125, 38021, 38264, 38271, 38376, 167439, 38886, 39029, 39118, 39134, 39267, 17e4, 40060, 40479, 40644, 27503, 63751, 20023, 131207, 38429, 25143, 38050, null, 20539, 28158, 171123, 40870, 15817, 34959, 147790, 28791, 23797, 19232, 152013, 13657, 154928, 24866, 166450, 36775, 37366, 29073, 26393, 29626, 144001, 172295, 15499, 137600, 19216, 30948, 29698, 20910, 165647, 16393, 27235, 172730, 16931, 34319, 133743, 31274, 170311, 166634, 38741, 28749, 21284, 139390, 37876, 30425, 166371, 40871, 30685, 20131, 20464, 20668, 20015, 20247, 40872, 21556, 32139, 22674, 22736, 138678, 24210, 24217, 24514, 141074, 25995, 144377, 26905, 27203, 146531, 27903, null, 29184, 148741, 29580, 16091, 150035, 23317, 29881, 35715, 154788, 153237, 31379, 31724, 31939, 32364, 33528, 34199, 40873, 34960, 40874, 36537, 40875, 36815, 34143, 39392, 37409, 40876, 167353, 136255, 16497, 17058, 23066, null, null, null, 39016, 26475, 17014, 22333, null, 34262, 149883, 33471, 160013, 19585, 159092, 23931, 158485, 159678, 40877, 40878, 23446, 40879, 26343, 32347, 28247, 31178, 15752, 17603, 143958, 141206, 17306, 17718, null, 23765, 146202, 35577, 23672, 15634, 144721, 23928, 40882, 29015, 17752, 147692, 138787, 19575, 14712, 13386, 131492, 158785, 35532, 20404, 131641, 22975, 33132, 38998, 170234, 24379, 134047, null, 139713, 166253, 16642, 18107, 168057, 16135, 40883, 172469, 16632, 14294, 18167, 158790, 16764, 165554, 160767, 17773, 14548, 152730, 17761, 17691, 19849, 19579, 19830, 17898, 16328, 150287, 13921, 17630, 17597, 16877, 23870, 23880, 23894, 15868, 14351, 23972, 23993, 14368, 14392, 24130, 24253, 24357, 24451, 14600, 14612, 14655, 14669, 24791, 24893, 23781, 14729, 25015, 25017, 25039, 14776, 25132, 25232, 25317, 25368, 14840, 22193, 14851, 25570, 25595, 25607, 25690, 14923, 25792, 23829, 22049, 40863, 14999, 25990, 15037, 26111, 26195, 15090, 26258, 15138, 26390, 15170, 26532, 26624, 15192, 26698, 26756, 15218, 15217, 15227, 26889, 26947, 29276, 26980, 27039, 27013, 15292, 27094, 15325, 27237, 27252, 27249, 27266, 15340, 27289, 15346, 27307, 27317, 27348, 27382, 27521, 27585, 27626, 27765, 27818, 15563, 27906, 27910, 27942, 28033, 15599, 28068, 28081, 28181, 28184, 28201, 28294, 166336, 28347, 28386, 28378, 40831, 28392, 28393, 28452, 28468, 15686, 147265, 28545, 28606, 15722, 15733, 29111, 23705, 15754, 28716, 15761, 28752, 28756, 28783, 28799, 28809, 131877, 17345, 13809, 134872, 147159, 22462, 159443, 28990, 153568, 13902, 27042, 166889, 23412, 31305, 153825, 169177, 31333, 31357, 154028, 31419, 31408, 31426, 31427, 29137, 156813, 16842, 31450, 31453, 31466, 16879, 21682, 154625, 31499, 31573, 31529, 152334, 154878, 31650, 31599, 33692, 154548, 158847, 31696, 33825, 31634, 31672, 154912, 15789, 154725, 33938, 31738, 31750, 31797, 154817, 31812, 31875, 149634, 31910, 26237, 148856, 31945, 31943, 31974, 31860, 31987, 31989, 31950, 32359, 17693, 159300, 32093, 159446, 29837, 32137, 32171, 28981, 32179, 32210, 147543, 155689, 32228, 15635, 32245, 137209, 32229, 164717, 32285, 155937, 155994, 32366, 32402, 17195, 37996, 32295, 32576, 32577, 32583, 31030, 156368, 39393, 32663, 156497, 32675, 136801, 131176, 17756, 145254, 17667, 164666, 32762, 156809, 32773, 32776, 32797, 32808, 32815, 172167, 158915, 32827, 32828, 32865, 141076, 18825, 157222, 146915, 157416, 26405, 32935, 166472, 33031, 33050, 22704, 141046, 27775, 156824, 151480, 25831, 136330, 33304, 137310, 27219, 150117, 150165, 17530, 33321, 133901, 158290, 146814, 20473, 136445, 34018, 33634, 158474, 149927, 144688, 137075, 146936, 33450, 26907, 194964, 16859, 34123, 33488, 33562, 134678, 137140, 14017, 143741, 144730, 33403, 33506, 33560, 147083, 159139, 158469, 158615, 144846, 15807, 33565, 21996, 33669, 17675, 159141, 33708, 33729, 33747, 13438, 159444, 27223, 34138, 13462, 159298, 143087, 33880, 154596, 33905, 15827, 17636, 27303, 33866, 146613, 31064, 33960, 158614, 159351, 159299, 34014, 33807, 33681, 17568, 33939, 34020, 154769, 16960, 154816, 17731, 34100, 23282, 159385, 17703, 34163, 17686, 26559, 34326, 165413, 165435, 34241, 159880, 34306, 136578, 159949, 194994, 17770, 34344, 13896, 137378, 21495, 160666, 34430, 34673, 172280, 34798, 142375, 34737, 34778, 34831, 22113, 34412, 26710, 17935, 34885, 34886, 161248, 146873, 161252, 34910, 34972, 18011, 34996, 34997, 25537, 35013, 30583, 161551, 35207, 35210, 35238, 35241, 35239, 35260, 166437, 35303, 162084, 162493, 35484, 30611, 37374, 35472, 162393, 31465, 162618, 147343, 18195, 162616, 29052, 35596, 35615, 152624, 152933, 35647, 35660, 35661, 35497, 150138, 35728, 35739, 35503, 136927, 17941, 34895, 35995, 163156, 163215, 195028, 14117, 163155, 36054, 163224, 163261, 36114, 36099, 137488, 36059, 28764, 36113, 150729, 16080, 36215, 36265, 163842, 135188, 149898, 15228, 164284, 160012, 31463, 36525, 36534, 36547, 37588, 36633, 36653, 164709, 164882, 36773, 37635, 172703, 133712, 36787, 18730, 166366, 165181, 146875, 24312, 143970, 36857, 172052, 165564, 165121, 140069, 14720, 159447, 36919, 165180, 162494, 36961, 165228, 165387, 37032, 165651, 37060, 165606, 37038, 37117, 37223, 15088, 37289, 37316, 31916, 166195, 138889, 37390, 27807, 37441, 37474, 153017, 37561, 166598, 146587, 166668, 153051, 134449, 37676, 37739, 166625, 166891, 28815, 23235, 166626, 166629, 18789, 37444, 166892, 166969, 166911, 37747, 37979, 36540, 38277, 38310, 37926, 38304, 28662, 17081, 140922, 165592, 135804, 146990, 18911, 27676, 38523, 38550, 16748, 38563, 159445, 25050, 38582, 30965, 166624, 38589, 21452, 18849, 158904, 131700, 156688, 168111, 168165, 150225, 137493, 144138, 38705, 34370, 38710, 18959, 17725, 17797, 150249, 28789, 23361, 38683, 38748, 168405, 38743, 23370, 168427, 38751, 37925, 20688, 143543, 143548, 38793, 38815, 38833, 38846, 38848, 38866, 38880, 152684, 38894, 29724, 169011, 38911, 38901, 168989, 162170, 19153, 38964, 38963, 38987, 39014, 15118, 160117, 15697, 132656, 147804, 153350, 39114, 39095, 39112, 39111, 19199, 159015, 136915, 21936, 39137, 39142, 39148, 37752, 39225, 150057, 19314, 170071, 170245, 39413, 39436, 39483, 39440, 39512, 153381, 14020, 168113, 170965, 39648, 39650, 170757, 39668, 19470, 39700, 39725, 165376, 20532, 39732, 158120, 14531, 143485, 39760, 39744, 171326, 23109, 137315, 39822, 148043, 39938, 39935, 39948, 171624, 40404, 171959, 172434, 172459, 172257, 172323, 172511, 40318, 40323, 172340, 40462, 26760, 40388, 139611, 172435, 172576, 137531, 172595, 40249, 172217, 172724, 40592, 40597, 40606, 40610, 19764, 40618, 40623, 148324, 40641, 15200, 14821, 15645, 20274, 14270, 166955, 40706, 40712, 19350, 37924, 159138, 40727, 40726, 40761, 22175, 22154, 40773, 39352, 168075, 38898, 33919, 40802, 40809, 31452, 40846, 29206, 19390, 149877, 149947, 29047, 150008, 148296, 150097, 29598, 166874, 137466, 31135, 166270, 167478, 37737, 37875, 166468, 37612, 37761, 37835, 166252, 148665, 29207, 16107, 30578, 31299, 28880, 148595, 148472, 29054, 137199, 28835, 137406, 144793, 16071, 137349, 152623, 137208, 14114, 136955, 137273, 14049, 137076, 137425, 155467, 14115, 136896, 22363, 150053, 136190, 135848, 136134, 136374, 34051, 145062, 34051, 33877, 149908, 160101, 146993, 152924, 147195, 159826, 17652, 145134, 170397, 159526, 26617, 14131, 15381, 15847, 22636, 137506, 26640, 16471, 145215, 147681, 147595, 147727, 158753, 21707, 22174, 157361, 22162, 135135, 134056, 134669, 37830, 166675, 37788, 20216, 20779, 14361, 148534, 20156, 132197, 131967, 20299, 20362, 153169, 23144, 131499, 132043, 14745, 131850, 132116, 13365, 20265, 131776, 167603, 131701, 35546, 131596, 20120, 20685, 20749, 20386, 20227, 150030, 147082, 20290, 20526, 20588, 20609, 20428, 20453, 20568, 20732, 20825, 20827, 20829, 20830, 28278, 144789, 147001, 147135, 28018, 137348, 147081, 20904, 20931, 132576, 17629, 132259, 132242, 132241, 36218, 166556, 132878, 21081, 21156, 133235, 21217, 37742, 18042, 29068, 148364, 134176, 149932, 135396, 27089, 134685, 29817, 16094, 29849, 29716, 29782, 29592, 19342, 150204, 147597, 21456, 13700, 29199, 147657, 21940, 131909, 21709, 134086, 22301, 37469, 38644, 37734, 22493, 22413, 22399, 13886, 22731, 23193, 166470, 136954, 137071, 136976, 23084, 22968, 37519, 23166, 23247, 23058, 153926, 137715, 137313, 148117, 14069, 27909, 29763, 23073, 155267, 23169, 166871, 132115, 37856, 29836, 135939, 28933, 18802, 37896, 166395, 37821, 14240, 23582, 23710, 24158, 24136, 137622, 137596, 146158, 24269, 23375, 137475, 137476, 14081, 137376, 14045, 136958, 14035, 33066, 166471, 138682, 144498, 166312, 24332, 24334, 137511, 137131, 23147, 137019, 23364, 34324, 161277, 34912, 24702, 141408, 140843, 24539, 16056, 140719, 140734, 168072, 159603, 25024, 131134, 131142, 140827, 24985, 24984, 24693, 142491, 142599, 149204, 168269, 25713, 149093, 142186, 14889, 142114, 144464, 170218, 142968, 25399, 173147, 25782, 25393, 25553, 149987, 142695, 25252, 142497, 25659, 25963, 26994, 15348, 143502, 144045, 149897, 144043, 21773, 144096, 137433, 169023, 26318, 144009, 143795, 15072, 16784, 152964, 166690, 152975, 136956, 152923, 152613, 30958, 143619, 137258, 143924, 13412, 143887, 143746, 148169, 26254, 159012, 26219, 19347, 26160, 161904, 138731, 26211, 144082, 144097, 26142, 153714, 14545, 145466, 145340, 15257, 145314, 144382, 29904, 15254, 26511, 149034, 26806, 26654, 15300, 27326, 14435, 145365, 148615, 27187, 27218, 27337, 27397, 137490, 25873, 26776, 27212, 15319, 27258, 27479, 147392, 146586, 37792, 37618, 166890, 166603, 37513, 163870, 166364, 37991, 28069, 28427, 149996, 28007, 147327, 15759, 28164, 147516, 23101, 28170, 22599, 27940, 30786, 28987, 148250, 148086, 28913, 29264, 29319, 29332, 149391, 149285, 20857, 150180, 132587, 29818, 147192, 144991, 150090, 149783, 155617, 16134, 16049, 150239, 166947, 147253, 24743, 16115, 29900, 29756, 37767, 29751, 17567, 159210, 17745, 30083, 16227, 150745, 150790, 16216, 30037, 30323, 173510, 15129, 29800, 166604, 149931, 149902, 15099, 15821, 150094, 16127, 149957, 149747, 37370, 22322, 37698, 166627, 137316, 20703, 152097, 152039, 30584, 143922, 30478, 30479, 30587, 149143, 145281, 14942, 149744, 29752, 29851, 16063, 150202, 150215, 16584, 150166, 156078, 37639, 152961, 30750, 30861, 30856, 30930, 29648, 31065, 161601, 153315, 16654, 31131, 33942, 31141, 27181, 147194, 31290, 31220, 16750, 136934, 16690, 37429, 31217, 134476, 149900, 131737, 146874, 137070, 13719, 21867, 13680, 13994, 131540, 134157, 31458, 23129, 141045, 154287, 154268, 23053, 131675, 30960, 23082, 154566, 31486, 16889, 31837, 31853, 16913, 154547, 155324, 155302, 31949, 150009, 137136, 31886, 31868, 31918, 27314, 32220, 32263, 32211, 32590, 156257, 155996, 162632, 32151, 155266, 17002, 158581, 133398, 26582, 131150, 144847, 22468, 156690, 156664, 149858, 32733, 31527, 133164, 154345, 154947, 31500, 155150, 39398, 34373, 39523, 27164, 144447, 14818, 150007, 157101, 39455, 157088, 33920, 160039, 158929, 17642, 33079, 17410, 32966, 33033, 33090, 157620, 39107, 158274, 33378, 33381, 158289, 33875, 159143, 34320, 160283, 23174, 16767, 137280, 23339, 137377, 23268, 137432, 34464, 195004, 146831, 34861, 160802, 23042, 34926, 20293, 34951, 35007, 35046, 35173, 35149, 153219, 35156, 161669, 161668, 166901, 166873, 166812, 166393, 16045, 33955, 18165, 18127, 14322, 35389, 35356, 169032, 24397, 37419, 148100, 26068, 28969, 28868, 137285, 40301, 35999, 36073, 163292, 22938, 30659, 23024, 17262, 14036, 36394, 36519, 150537, 36656, 36682, 17140, 27736, 28603, 140065, 18587, 28537, 28299, 137178, 39913, 14005, 149807, 37051, 37015, 21873, 18694, 37307, 37892, 166475, 16482, 166652, 37927, 166941, 166971, 34021, 35371, 38297, 38311, 38295, 38294, 167220, 29765, 16066, 149759, 150082, 148458, 16103, 143909, 38543, 167655, 167526, 167525, 16076, 149997, 150136, 147438, 29714, 29803, 16124, 38721, 168112, 26695, 18973, 168083, 153567, 38749, 37736, 166281, 166950, 166703, 156606, 37562, 23313, 35689, 18748, 29689, 147995, 38811, 38769, 39224, 134950, 24001, 166853, 150194, 38943, 169178, 37622, 169431, 37349, 17600, 166736, 150119, 166756, 39132, 166469, 16128, 37418, 18725, 33812, 39227, 39245, 162566, 15869, 39323, 19311, 39338, 39516, 166757, 153800, 27279, 39457, 23294, 39471, 170225, 19344, 170312, 39356, 19389, 19351, 37757, 22642, 135938, 22562, 149944, 136424, 30788, 141087, 146872, 26821, 15741, 37976, 14631, 24912, 141185, 141675, 24839, 40015, 40019, 40059, 39989, 39952, 39807, 39887, 171565, 39839, 172533, 172286, 40225, 19630, 147716, 40472, 19632, 40204, 172468, 172269, 172275, 170287, 40357, 33981, 159250, 159711, 158594, 34300, 17715, 159140, 159364, 159216, 33824, 34286, 159232, 145367, 155748, 31202, 144796, 144960, 18733, 149982, 15714, 37851, 37566, 37704, 131775, 30905, 37495, 37965, 20452, 13376, 36964, 152925, 30781, 30804, 30902, 30795, 137047, 143817, 149825, 13978, 20338, 28634, 28633, 28702, 28702, 21524, 147893, 22459, 22771, 22410, 40214, 22487, 28980, 13487, 147884, 29163, 158784, 151447, 23336, 137141, 166473, 24844, 23246, 23051, 17084, 148616, 14124, 19323, 166396, 37819, 37816, 137430, 134941, 33906, 158912, 136211, 148218, 142374, 148417, 22932, 146871, 157505, 32168, 155995, 155812, 149945, 149899, 166394, 37605, 29666, 16105, 29876, 166755, 137375, 16097, 150195, 27352, 29683, 29691, 16086, 150078, 150164, 137177, 150118, 132007, 136228, 149989, 29768, 149782, 28837, 149878, 37508, 29670, 37727, 132350, 37681, 166606, 166422, 37766, 166887, 153045, 18741, 166530, 29035, 149827, 134399, 22180, 132634, 134123, 134328, 21762, 31172, 137210, 32254, 136898, 150096, 137298, 17710, 37889, 14090, 166592, 149933, 22960, 137407, 137347, 160900, 23201, 14050, 146779, 14e3, 37471, 23161, 166529, 137314, 37748, 15565, 133812, 19094, 14730, 20724, 15721, 15692, 136092, 29045, 17147, 164376, 28175, 168164, 17643, 27991, 163407, 28775, 27823, 15574, 147437, 146989, 28162, 28428, 15727, 132085, 30033, 14012, 13512, 18048, 16090, 18545, 22980, 37486, 18750, 36673, 166940, 158656, 22546, 22472, 14038, 136274, 28926, 148322, 150129, 143331, 135856, 140221, 26809, 26983, 136088, 144613, 162804, 145119, 166531, 145366, 144378, 150687, 27162, 145069, 158903, 33854, 17631, 17614, 159014, 159057, 158850, 159710, 28439, 160009, 33597, 137018, 33773, 158848, 159827, 137179, 22921, 23170, 137139, 23137, 23153, 137477, 147964, 14125, 23023, 137020, 14023, 29070, 37776, 26266, 148133, 23150, 23083, 148115, 27179, 147193, 161590, 148571, 148170, 28957, 148057, 166369, 20400, 159016, 23746, 148686, 163405, 148413, 27148, 148054, 135940, 28838, 28979, 148457, 15781, 27871, 194597, 150095, 32357, 23019, 23855, 15859, 24412, 150109, 137183, 32164, 33830, 21637, 146170, 144128, 131604, 22398, 133333, 132633, 16357, 139166, 172726, 28675, 168283, 23920, 29583, 31955, 166489, 168992, 20424, 32743, 29389, 29456, 162548, 29496, 29497, 153334, 29505, 29512, 16041, 162584, 36972, 29173, 149746, 29665, 33270, 16074, 30476, 16081, 27810, 22269, 29721, 29726, 29727, 16098, 16112, 16116, 16122, 29907, 16142, 16211, 30018, 30061, 30066, 30093, 16252, 30152, 30172, 16320, 30285, 16343, 30324, 16348, 30330, 151388, 29064, 22051, 35200, 22633, 16413, 30531, 16441, 26465, 16453, 13787, 30616, 16490, 16495, 23646, 30654, 30667, 22770, 30744, 28857, 30748, 16552, 30777, 30791, 30801, 30822, 33864, 152885, 31027, 26627, 31026, 16643, 16649, 31121, 31129, 36795, 31238, 36796, 16743, 31377, 16818, 31420, 33401, 16836, 31439, 31451, 16847, 20001, 31586, 31596, 31611, 31762, 31771, 16992, 17018, 31867, 31900, 17036, 31928, 17044, 31981, 36755, 28864, 134351, 32207, 32212, 32208, 32253, 32686, 32692, 29343, 17303, 32800, 32805, 31545, 32814, 32817, 32852, 15820, 22452, 28832, 32951, 33001, 17389, 33036, 29482, 33038, 33042, 30048, 33044, 17409, 15161, 33110, 33113, 33114, 17427, 22586, 33148, 33156, 17445, 33171, 17453, 33189, 22511, 33217, 33252, 33364, 17551, 33446, 33398, 33482, 33496, 33535, 17584, 33623, 38505, 27018, 33797, 28917, 33892, 24803, 33928, 17668, 33982, 34017, 34040, 34064, 34104, 34130, 17723, 34159, 34160, 34272, 17783, 34418, 34450, 34482, 34543, 38469, 34699, 17926, 17943, 34990, 35071, 35108, 35143, 35217, 162151, 35369, 35384, 35476, 35508, 35921, 36052, 36082, 36124, 18328, 22623, 36291, 18413, 20206, 36410, 21976, 22356, 36465, 22005, 36528, 18487, 36558, 36578, 36580, 36589, 36594, 36791, 36801, 36810, 36812, 36915, 39364, 18605, 39136, 37395, 18718, 37416, 37464, 37483, 37553, 37550, 37567, 37603, 37611, 37619, 37620, 37629, 37699, 37764, 37805, 18757, 18769, 40639, 37911, 21249, 37917, 37933, 37950, 18794, 37972, 38009, 38189, 38306, 18855, 38388, 38451, 18917, 26528, 18980, 38720, 18997, 38834, 38850, 22100, 19172, 24808, 39097, 19225, 39153, 22596, 39182, 39193, 20916, 39196, 39223, 39234, 39261, 39266, 19312, 39365, 19357, 39484, 39695, 31363, 39785, 39809, 39901, 39921, 39924, 19565, 39968, 14191, 138178, 40265, 39994, 40702, 22096, 40339, 40381, 40384, 40444, 38134, 36790, 40571, 40620, 40625, 40637, 40646, 38108, 40674, 40689, 40696, 31432, 40772, 131220, 131767, 132e3, 26906, 38083, 22956, 132311, 22592, 38081, 14265, 132565, 132629, 132726, 136890, 22359, 29043, 133826, 133837, 134079, 21610, 194619, 134091, 21662, 134139, 134203, 134227, 134245, 134268, 24807, 134285, 22138, 134325, 134365, 134381, 134511, 134578, 134600, 26965, 39983, 34725, 134660, 134670, 134871, 135056, 134957, 134771, 23584, 135100, 24075, 135260, 135247, 135286, 26398, 135291, 135304, 135318, 13895, 135359, 135379, 135471, 135483, 21348, 33965, 135907, 136053, 135990, 35713, 136567, 136729, 137155, 137159, 20088, 28859, 137261, 137578, 137773, 137797, 138282, 138352, 138412, 138952, 25283, 138965, 139029, 29080, 26709, 139333, 27113, 14024, 139900, 140247, 140282, 141098, 141425, 141647, 33533, 141671, 141715, 142037, 35237, 142056, 36768, 142094, 38840, 142143, 38983, 39613, 142412, null, 142472, 142519, 154600, 142600, 142610, 142775, 142741, 142914, 143220, 143308, 143411, 143462, 144159, 144350, 24497, 26184, 26303, 162425, 144743, 144883, 29185, 149946, 30679, 144922, 145174, 32391, 131910, 22709, 26382, 26904, 146087, 161367, 155618, 146961, 147129, 161278, 139418, 18640, 19128, 147737, 166554, 148206, 148237, 147515, 148276, 148374, 150085, 132554, 20946, 132625, 22943, 138920, 15294, 146687, 148484, 148694, 22408, 149108, 14747, 149295, 165352, 170441, 14178, 139715, 35678, 166734, 39382, 149522, 149755, 150037, 29193, 150208, 134264, 22885, 151205, 151430, 132985, 36570, 151596, 21135, 22335, 29041, 152217, 152601, 147274, 150183, 21948, 152646, 152686, 158546, 37332, 13427, 152895, 161330, 152926, 18200, 152930, 152934, 153543, 149823, 153693, 20582, 13563, 144332, 24798, 153859, 18300, 166216, 154286, 154505, 154630, 138640, 22433, 29009, 28598, 155906, 162834, 36950, 156082, 151450, 35682, 156674, 156746, 23899, 158711, 36662, 156804, 137500, 35562, 150006, 156808, 147439, 156946, 19392, 157119, 157365, 141083, 37989, 153569, 24981, 23079, 194765, 20411, 22201, 148769, 157436, 20074, 149812, 38486, 28047, 158909, 13848, 35191, 157593, 157806, 156689, 157790, 29151, 157895, 31554, 168128, 133649, 157990, 37124, 158009, 31301, 40432, 158202, 39462, 158253, 13919, 156777, 131105, 31107, 158260, 158555, 23852, 144665, 33743, 158621, 18128, 158884, 30011, 34917, 159150, 22710, 14108, 140685, 159819, 160205, 15444, 160384, 160389, 37505, 139642, 160395, 37680, 160486, 149968, 27705, 38047, 160848, 134904, 34855, 35061, 141606, 164979, 137137, 28344, 150058, 137248, 14756, 14009, 23568, 31203, 17727, 26294, 171181, 170148, 35139, 161740, 161880, 22230, 16607, 136714, 14753, 145199, 164072, 136133, 29101, 33638, 162269, 168360, 23143, 19639, 159919, 166315, 162301, 162314, 162571, 163174, 147834, 31555, 31102, 163849, 28597, 172767, 27139, 164632, 21410, 159239, 37823, 26678, 38749, 164207, 163875, 158133, 136173, 143919, 163912, 23941, 166960, 163971, 22293, 38947, 166217, 23979, 149896, 26046, 27093, 21458, 150181, 147329, 15377, 26422, 163984, 164084, 164142, 139169, 164175, 164233, 164271, 164378, 164614, 164655, 164746, 13770, 164968, 165546, 18682, 25574, 166230, 30728, 37461, 166328, 17394, 166375, 17375, 166376, 166726, 166868, 23032, 166921, 36619, 167877, 168172, 31569, 168208, 168252, 15863, 168286, 150218, 36816, 29327, 22155, 169191, 169449, 169392, 169400, 169778, 170193, 170313, 170346, 170435, 170536, 170766, 171354, 171419, 32415, 171768, 171811, 19620, 38215, 172691, 29090, 172799, 19857, 36882, 173515, 19868, 134300, 36798, 21953, 36794, 140464, 36793, 150163, 17673, 32383, 28502, 27313, 20202, 13540, 166700, 161949, 14138, 36480, 137205, 163876, 166764, 166809, 162366, 157359, 15851, 161365, 146615, 153141, 153942, 20122, 155265, 156248, 22207, 134765, 36366, 23405, 147080, 150686, 25566, 25296, 137206, 137339, 25904, 22061, 154698, 21530, 152337, 15814, 171416, 19581, 22050, 22046, 32585, 155352, 22901, 146752, 34672, 19996, 135146, 134473, 145082, 33047, 40286, 36120, 30267, 40005, 30286, 30649, 37701, 21554, 33096, 33527, 22053, 33074, 33816, 32957, 21994, 31074, 22083, 21526, 134813, 13774, 22021, 22001, 26353, 164578, 13869, 30004, 22e3, 21946, 21655, 21874, 134209, 134294, 24272, 151880, 134774, 142434, 134818, 40619, 32090, 21982, 135285, 25245, 38765, 21652, 36045, 29174, 37238, 25596, 25529, 25598, 21865, 142147, 40050, 143027, 20890, 13535, 134567, 20903, 21581, 21790, 21779, 30310, 36397, 157834, 30129, 32950, 34820, 34694, 35015, 33206, 33820, 135361, 17644, 29444, 149254, 23440, 33547, 157843, 22139, 141044, 163119, 147875, 163187, 159440, 160438, 37232, 135641, 37384, 146684, 173737, 134828, 134905, 29286, 138402, 18254, 151490, 163833, 135147, 16634, 40029, 25887, 142752, 18675, 149472, 171388, 135148, 134666, 24674, 161187, 135149, null, 155720, 135559, 29091, 32398, 40272, 19994, 19972, 13687, 23309, 27826, 21351, 13996, 14812, 21373, 13989, 149016, 22682, 150382, 33325, 21579, 22442, 154261, 133497, null, 14930, 140389, 29556, 171692, 19721, 39917, 146686, 171824, 19547, 151465, 169374, 171998, 33884, 146870, 160434, 157619, 145184, 25390, 32037, 147191, 146988, 14890, 36872, 21196, 15988, 13946, 17897, 132238, 30272, 23280, 134838, 30842, 163630, 22695, 16575, 22140, 39819, 23924, 30292, 173108, 40581, 19681, 30201, 14331, 24857, 143578, 148466, null, 22109, 135849, 22439, 149859, 171526, 21044, 159918, 13741, 27722, 40316, 31830, 39737, 22494, 137068, 23635, 25811, 169168, 156469, 160100, 34477, 134440, 159010, 150242, 134513, null, 20990, 139023, 23950, 38659, 138705, 40577, 36940, 31519, 39682, 23761, 31651, 25192, 25397, 39679, 31695, 39722, 31870, 39726, 31810, 31878, 39957, 31740, 39689, 40727, 39963, 149822, 40794, 21875, 23491, 20477, 40600, 20466, 21088, 15878, 21201, 22375, 20566, 22967, 24082, 38856, 40363, 36700, 21609, 38836, 39232, 38842, 21292, 24880, 26924, 21466, 39946, 40194, 19515, 38465, 27008, 20646, 30022, 137069, 39386, 21107, null, 37209, 38529, 37212, null, 37201, 167575, 25471, 159011, 27338, 22033, 37262, 30074, 25221, 132092, 29519, 31856, 154657, 146685, null, 149785, 30422, 39837, 20010, 134356, 33726, 34882, null, 23626, 27072, 20717, 22394, 21023, 24053, 20174, 27697, 131570, 20281, 21660, 21722, 21146, 36226, 13822, 24332, 13811, null, 27474, 37244, 40869, 39831, 38958, 39092, 39610, 40616, 40580, 29050, 31508, null, 27642, 34840, 32632, null, 22048, 173642, 36471, 40787, null, 36308, 36431, 40476, 36353, 25218, 164733, 36392, 36469, 31443, 150135, 31294, 30936, 27882, 35431, 30215, 166490, 40742, 27854, 34774, 30147, 172722, 30803, 194624, 36108, 29410, 29553, 35629, 29442, 29937, 36075, 150203, 34351, 24506, 34976, 17591, null, 137275, 159237, null, 35454, 140571, null, 24829, 30311, 39639, 40260, 37742, 39823, 34805, null, 34831, 36087, 29484, 38689, 39856, 13782, 29362, 19463, 31825, 39242, 155993, 24921, 19460, 40598, 24957, null, 22367, 24943, 25254, 25145, 25294, 14940, 25058, 21418, 144373, 25444, 26626, 13778, 23895, 166850, 36826, 167481, null, 20697, 138566, 30982, 21298, 38456, 134971, 16485, null, 30718, null, 31938, 155418, 31962, 31277, 32870, 32867, 32077, 29957, 29938, 35220, 33306, 26380, 32866, 160902, 32859, 29936, 33027, 30500, 35209, 157644, 30035, 159441, 34729, 34766, 33224, 34700, 35401, 36013, 35651, 30507, 29944, 34010, 13877, 27058, 36262, null, 35241, 29800, 28089, 34753, 147473, 29927, 15835, 29046, 24740, 24988, 15569, 29026, 24695, null, 32625, 166701, 29264, 24809, 19326, 21024, 15384, 146631, 155351, 161366, 152881, 137540, 135934, 170243, 159196, 159917, 23745, 156077, 166415, 145015, 131310, 157766, 151310, 17762, 23327, 156492, 40784, 40614, 156267, 12288, 65292, 12289, 12290, 65294, 8231, 65307, 65306, 65311, 65281, 65072, 8230, 8229, 65104, 65105, 65106, 183, 65108, 65109, 65110, 65111, 65372, 8211, 65073, 8212, 65075, 9588, 65076, 65103, 65288, 65289, 65077, 65078, 65371, 65373, 65079, 65080, 12308, 12309, 65081, 65082, 12304, 12305, 65083, 65084, 12298, 12299, 65085, 65086, 12296, 12297, 65087, 65088, 12300, 12301, 65089, 65090, 12302, 12303, 65091, 65092, 65113, 65114, 65115, 65116, 65117, 65118, 8216, 8217, 8220, 8221, 12317, 12318, 8245, 8242, 65283, 65286, 65290, 8251, 167, 12291, 9675, 9679, 9651, 9650, 9678, 9734, 9733, 9671, 9670, 9633, 9632, 9661, 9660, 12963, 8453, 175, 65507, 65343, 717, 65097, 65098, 65101, 65102, 65099, 65100, 65119, 65120, 65121, 65291, 65293, 215, 247, 177, 8730, 65308, 65310, 65309, 8806, 8807, 8800, 8734, 8786, 8801, 65122, 65123, 65124, 65125, 65126, 65374, 8745, 8746, 8869, 8736, 8735, 8895, 13266, 13265, 8747, 8750, 8757, 8756, 9792, 9794, 8853, 8857, 8593, 8595, 8592, 8594, 8598, 8599, 8601, 8600, 8741, 8739, 65295, 65340, 8725, 65128, 65284, 65509, 12306, 65504, 65505, 65285, 65312, 8451, 8457, 65129, 65130, 65131, 13269, 13212, 13213, 13214, 13262, 13217, 13198, 13199, 13252, 176, 20825, 20827, 20830, 20829, 20833, 20835, 21991, 29929, 31950, 9601, 9602, 9603, 9604, 9605, 9606, 9607, 9608, 9615, 9614, 9613, 9612, 9611, 9610, 9609, 9532, 9524, 9516, 9508, 9500, 9620, 9472, 9474, 9621, 9484, 9488, 9492, 9496, 9581, 9582, 9584, 9583, 9552, 9566, 9578, 9569, 9698, 9699, 9701, 9700, 9585, 9586, 9587, 65296, 65297, 65298, 65299, 65300, 65301, 65302, 65303, 65304, 65305, 8544, 8545, 8546, 8547, 8548, 8549, 8550, 8551, 8552, 8553, 12321, 12322, 12323, 12324, 12325, 12326, 12327, 12328, 12329, 21313, 21316, 21317, 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, 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, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 963, 964, 965, 966, 967, 968, 969, 12549, 12550, 12551, 12552, 12553, 12554, 12555, 12556, 12557, 12558, 12559, 12560, 12561, 12562, 12563, 12564, 12565, 12566, 12567, 12568, 12569, 12570, 12571, 12572, 12573, 12574, 12575, 12576, 12577, 12578, 12579, 12580, 12581, 12582, 12583, 12584, 12585, 729, 713, 714, 711, 715, 9216, 9217, 9218, 9219, 9220, 9221, 9222, 9223, 9224, 9225, 9226, 9227, 9228, 9229, 9230, 9231, 9232, 9233, 9234, 9235, 9236, 9237, 9238, 9239, 9240, 9241, 9242, 9243, 9244, 9245, 9246, 9247, 9249, 8364, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 19968, 20057, 19969, 19971, 20035, 20061, 20102, 20108, 20154, 20799, 20837, 20843, 20960, 20992, 20993, 21147, 21269, 21313, 21340, 21448, 19977, 19979, 19976, 19978, 20011, 20024, 20961, 20037, 20040, 20063, 20062, 20110, 20129, 20800, 20995, 21242, 21315, 21449, 21475, 22303, 22763, 22805, 22823, 22899, 23376, 23377, 23379, 23544, 23567, 23586, 23608, 23665, 24029, 24037, 24049, 24050, 24051, 24062, 24178, 24318, 24331, 24339, 25165, 19985, 19984, 19981, 20013, 20016, 20025, 20043, 23609, 20104, 20113, 20117, 20114, 20116, 20130, 20161, 20160, 20163, 20166, 20167, 20173, 20170, 20171, 20164, 20803, 20801, 20839, 20845, 20846, 20844, 20887, 20982, 20998, 20999, 21e3, 21243, 21246, 21247, 21270, 21305, 21320, 21319, 21317, 21342, 21380, 21451, 21450, 21453, 22764, 22825, 22827, 22826, 22829, 23380, 23569, 23588, 23610, 23663, 24052, 24187, 24319, 24340, 24341, 24515, 25096, 25142, 25163, 25166, 25903, 25991, 26007, 26020, 26041, 26085, 26352, 26376, 26408, 27424, 27490, 27513, 27595, 27604, 27611, 27663, 27700, 28779, 29226, 29238, 29243, 29255, 29273, 29275, 29356, 29579, 19993, 19990, 19989, 19988, 19992, 20027, 20045, 20047, 20046, 20197, 20184, 20180, 20181, 20182, 20183, 20195, 20196, 20185, 20190, 20805, 20804, 20873, 20874, 20908, 20985, 20986, 20984, 21002, 21152, 21151, 21253, 21254, 21271, 21277, 20191, 21322, 21321, 21345, 21344, 21359, 21358, 21435, 21487, 21476, 21491, 21484, 21486, 21481, 21480, 21500, 21496, 21493, 21483, 21478, 21482, 21490, 21489, 21488, 21477, 21485, 21499, 22235, 22234, 22806, 22830, 22833, 22900, 22902, 23381, 23427, 23612, 24040, 24039, 24038, 24066, 24067, 24179, 24188, 24321, 24344, 24343, 24517, 25098, 25171, 25172, 25170, 25169, 26021, 26086, 26414, 26412, 26410, 26411, 26413, 27491, 27597, 27665, 27664, 27704, 27713, 27712, 27710, 29359, 29572, 29577, 29916, 29926, 29976, 29983, 29992, 29993, 3e4, 30001, 30002, 30003, 30091, 30333, 30382, 30399, 30446, 30683, 30690, 30707, 31034, 31166, 31348, 31435, 19998, 19999, 20050, 20051, 20073, 20121, 20132, 20134, 20133, 20223, 20233, 20249, 20234, 20245, 20237, 20240, 20241, 20239, 20210, 20214, 20219, 20208, 20211, 20221, 20225, 20235, 20809, 20807, 20806, 20808, 20840, 20849, 20877, 20912, 21015, 21009, 21010, 21006, 21014, 21155, 21256, 21281, 21280, 21360, 21361, 21513, 21519, 21516, 21514, 21520, 21505, 21515, 21508, 21521, 21517, 21512, 21507, 21518, 21510, 21522, 22240, 22238, 22237, 22323, 22320, 22312, 22317, 22316, 22319, 22313, 22809, 22810, 22839, 22840, 22916, 22904, 22915, 22909, 22905, 22914, 22913, 23383, 23384, 23431, 23432, 23429, 23433, 23546, 23574, 23673, 24030, 24070, 24182, 24180, 24335, 24347, 24537, 24534, 25102, 25100, 25101, 25104, 25187, 25179, 25176, 25910, 26089, 26088, 26092, 26093, 26354, 26355, 26377, 26429, 26420, 26417, 26421, 27425, 27492, 27515, 27670, 27741, 27735, 27737, 27743, 27744, 27728, 27733, 27745, 27739, 27725, 27726, 28784, 29279, 29277, 30334, 31481, 31859, 31992, 32566, 32650, 32701, 32769, 32771, 32780, 32786, 32819, 32895, 32905, 32907, 32908, 33251, 33258, 33267, 33276, 33292, 33307, 33311, 33390, 33394, 33406, 34411, 34880, 34892, 34915, 35199, 38433, 20018, 20136, 20301, 20303, 20295, 20311, 20318, 20276, 20315, 20309, 20272, 20304, 20305, 20285, 20282, 20280, 20291, 20308, 20284, 20294, 20323, 20316, 20320, 20271, 20302, 20278, 20313, 20317, 20296, 20314, 20812, 20811, 20813, 20853, 20918, 20919, 21029, 21028, 21033, 21034, 21032, 21163, 21161, 21162, 21164, 21283, 21363, 21365, 21533, 21549, 21534, 21566, 21542, 21582, 21543, 21574, 21571, 21555, 21576, 21570, 21531, 21545, 21578, 21561, 21563, 21560, 21550, 21557, 21558, 21536, 21564, 21568, 21553, 21547, 21535, 21548, 22250, 22256, 22244, 22251, 22346, 22353, 22336, 22349, 22343, 22350, 22334, 22352, 22351, 22331, 22767, 22846, 22941, 22930, 22952, 22942, 22947, 22937, 22934, 22925, 22948, 22931, 22922, 22949, 23389, 23388, 23386, 23387, 23436, 23435, 23439, 23596, 23616, 23617, 23615, 23614, 23696, 23697, 23700, 23692, 24043, 24076, 24207, 24199, 24202, 24311, 24324, 24351, 24420, 24418, 24439, 24441, 24536, 24524, 24535, 24525, 24561, 24555, 24568, 24554, 25106, 25105, 25220, 25239, 25238, 25216, 25206, 25225, 25197, 25226, 25212, 25214, 25209, 25203, 25234, 25199, 25240, 25198, 25237, 25235, 25233, 25222, 25913, 25915, 25912, 26097, 26356, 26463, 26446, 26447, 26448, 26449, 26460, 26454, 26462, 26441, 26438, 26464, 26451, 26455, 27493, 27599, 27714, 27742, 27801, 27777, 27784, 27785, 27781, 27803, 27754, 27770, 27792, 27760, 27788, 27752, 27798, 27794, 27773, 27779, 27762, 27774, 27764, 27782, 27766, 27789, 27796, 27800, 27778, 28790, 28796, 28797, 28792, 29282, 29281, 29280, 29380, 29378, 29590, 29996, 29995, 30007, 30008, 30338, 30447, 30691, 31169, 31168, 31167, 31350, 31995, 32597, 32918, 32915, 32925, 32920, 32923, 32922, 32946, 33391, 33426, 33419, 33421, 35211, 35282, 35328, 35895, 35910, 35925, 35997, 36196, 36208, 36275, 36523, 36554, 36763, 36784, 36802, 36806, 36805, 36804, 24033, 37009, 37026, 37034, 37030, 37027, 37193, 37318, 37324, 38450, 38446, 38449, 38442, 38444, 20006, 20054, 20083, 20107, 20123, 20126, 20139, 20140, 20335, 20381, 20365, 20339, 20351, 20332, 20379, 20363, 20358, 20355, 20336, 20341, 20360, 20329, 20347, 20374, 20350, 20367, 20369, 20346, 20820, 20818, 20821, 20841, 20855, 20854, 20856, 20925, 20989, 21051, 21048, 21047, 21050, 21040, 21038, 21046, 21057, 21182, 21179, 21330, 21332, 21331, 21329, 21350, 21367, 21368, 21369, 21462, 21460, 21463, 21619, 21621, 21654, 21624, 21653, 21632, 21627, 21623, 21636, 21650, 21638, 21628, 21648, 21617, 21622, 21644, 21658, 21602, 21608, 21643, 21629, 21646, 22266, 22403, 22391, 22378, 22377, 22369, 22374, 22372, 22396, 22812, 22857, 22855, 22856, 22852, 22868, 22974, 22971, 22996, 22969, 22958, 22993, 22982, 22992, 22989, 22987, 22995, 22986, 22959, 22963, 22994, 22981, 23391, 23396, 23395, 23447, 23450, 23448, 23452, 23449, 23451, 23578, 23624, 23621, 23622, 23735, 23713, 23736, 23721, 23723, 23729, 23731, 24088, 24090, 24086, 24085, 24091, 24081, 24184, 24218, 24215, 24220, 24213, 24214, 24310, 24358, 24359, 24361, 24448, 24449, 24447, 24444, 24541, 24544, 24573, 24565, 24575, 24591, 24596, 24623, 24629, 24598, 24618, 24597, 24609, 24615, 24617, 24619, 24603, 25110, 25109, 25151, 25150, 25152, 25215, 25289, 25292, 25284, 25279, 25282, 25273, 25298, 25307, 25259, 25299, 25300, 25291, 25288, 25256, 25277, 25276, 25296, 25305, 25287, 25293, 25269, 25306, 25265, 25304, 25302, 25303, 25286, 25260, 25294, 25918, 26023, 26044, 26106, 26132, 26131, 26124, 26118, 26114, 26126, 26112, 26127, 26133, 26122, 26119, 26381, 26379, 26477, 26507, 26517, 26481, 26524, 26483, 26487, 26503, 26525, 26519, 26479, 26480, 26495, 26505, 26494, 26512, 26485, 26522, 26515, 26492, 26474, 26482, 27427, 27494, 27495, 27519, 27667, 27675, 27875, 27880, 27891, 27825, 27852, 27877, 27827, 27837, 27838, 27836, 27874, 27819, 27861, 27859, 27832, 27844, 27833, 27841, 27822, 27863, 27845, 27889, 27839, 27835, 27873, 27867, 27850, 27820, 27887, 27868, 27862, 27872, 28821, 28814, 28818, 28810, 28825, 29228, 29229, 29240, 29256, 29287, 29289, 29376, 29390, 29401, 29399, 29392, 29609, 29608, 29599, 29611, 29605, 30013, 30109, 30105, 30106, 30340, 30402, 30450, 30452, 30693, 30717, 31038, 31040, 31041, 31177, 31176, 31354, 31353, 31482, 31998, 32596, 32652, 32651, 32773, 32954, 32933, 32930, 32945, 32929, 32939, 32937, 32948, 32938, 32943, 33253, 33278, 33293, 33459, 33437, 33433, 33453, 33469, 33439, 33465, 33457, 33452, 33445, 33455, 33464, 33443, 33456, 33470, 33463, 34382, 34417, 21021, 34920, 36555, 36814, 36820, 36817, 37045, 37048, 37041, 37046, 37319, 37329, 38263, 38272, 38428, 38464, 38463, 38459, 38468, 38466, 38585, 38632, 38738, 38750, 20127, 20141, 20142, 20449, 20405, 20399, 20415, 20448, 20433, 20431, 20445, 20419, 20406, 20440, 20447, 20426, 20439, 20398, 20432, 20420, 20418, 20442, 20430, 20446, 20407, 20823, 20882, 20881, 20896, 21070, 21059, 21066, 21069, 21068, 21067, 21063, 21191, 21193, 21187, 21185, 21261, 21335, 21371, 21402, 21467, 21676, 21696, 21672, 21710, 21705, 21688, 21670, 21683, 21703, 21698, 21693, 21674, 21697, 21700, 21704, 21679, 21675, 21681, 21691, 21673, 21671, 21695, 22271, 22402, 22411, 22432, 22435, 22434, 22478, 22446, 22419, 22869, 22865, 22863, 22862, 22864, 23004, 23e3, 23039, 23011, 23016, 23043, 23013, 23018, 23002, 23014, 23041, 23035, 23401, 23459, 23462, 23460, 23458, 23461, 23553, 23630, 23631, 23629, 23627, 23769, 23762, 24055, 24093, 24101, 24095, 24189, 24224, 24230, 24314, 24328, 24365, 24421, 24456, 24453, 24458, 24459, 24455, 24460, 24457, 24594, 24605, 24608, 24613, 24590, 24616, 24653, 24688, 24680, 24674, 24646, 24643, 24684, 24683, 24682, 24676, 25153, 25308, 25366, 25353, 25340, 25325, 25345, 25326, 25341, 25351, 25329, 25335, 25327, 25324, 25342, 25332, 25361, 25346, 25919, 25925, 26027, 26045, 26082, 26149, 26157, 26144, 26151, 26159, 26143, 26152, 26161, 26148, 26359, 26623, 26579, 26609, 26580, 26576, 26604, 26550, 26543, 26613, 26601, 26607, 26564, 26577, 26548, 26586, 26597, 26552, 26575, 26590, 26611, 26544, 26585, 26594, 26589, 26578, 27498, 27523, 27526, 27573, 27602, 27607, 27679, 27849, 27915, 27954, 27946, 27969, 27941, 27916, 27953, 27934, 27927, 27963, 27965, 27966, 27958, 27931, 27893, 27961, 27943, 27960, 27945, 27950, 27957, 27918, 27947, 28843, 28858, 28851, 28844, 28847, 28845, 28856, 28846, 28836, 29232, 29298, 29295, 29300, 29417, 29408, 29409, 29623, 29642, 29627, 29618, 29645, 29632, 29619, 29978, 29997, 30031, 30028, 30030, 30027, 30123, 30116, 30117, 30114, 30115, 30328, 30342, 30343, 30344, 30408, 30406, 30403, 30405, 30465, 30457, 30456, 30473, 30475, 30462, 30460, 30471, 30684, 30722, 30740, 30732, 30733, 31046, 31049, 31048, 31047, 31161, 31162, 31185, 31186, 31179, 31359, 31361, 31487, 31485, 31869, 32002, 32005, 32e3, 32009, 32007, 32004, 32006, 32568, 32654, 32703, 32772, 32784, 32781, 32785, 32822, 32982, 32997, 32986, 32963, 32964, 32972, 32993, 32987, 32974, 32990, 32996, 32989, 33268, 33314, 33511, 33539, 33541, 33507, 33499, 33510, 33540, 33509, 33538, 33545, 33490, 33495, 33521, 33537, 33500, 33492, 33489, 33502, 33491, 33503, 33519, 33542, 34384, 34425, 34427, 34426, 34893, 34923, 35201, 35284, 35336, 35330, 35331, 35998, 36e3, 36212, 36211, 36276, 36557, 36556, 36848, 36838, 36834, 36842, 36837, 36845, 36843, 36836, 36840, 37066, 37070, 37057, 37059, 37195, 37194, 37325, 38274, 38480, 38475, 38476, 38477, 38754, 38761, 38859, 38893, 38899, 38913, 39080, 39131, 39135, 39318, 39321, 20056, 20147, 20492, 20493, 20515, 20463, 20518, 20517, 20472, 20521, 20502, 20486, 20540, 20511, 20506, 20498, 20497, 20474, 20480, 20500, 20520, 20465, 20513, 20491, 20505, 20504, 20467, 20462, 20525, 20522, 20478, 20523, 20489, 20860, 20900, 20901, 20898, 20941, 20940, 20934, 20939, 21078, 21084, 21076, 21083, 21085, 21290, 21375, 21407, 21405, 21471, 21736, 21776, 21761, 21815, 21756, 21733, 21746, 21766, 21754, 21780, 21737, 21741, 21729, 21769, 21742, 21738, 21734, 21799, 21767, 21757, 21775, 22275, 22276, 22466, 22484, 22475, 22467, 22537, 22799, 22871, 22872, 22874, 23057, 23064, 23068, 23071, 23067, 23059, 23020, 23072, 23075, 23081, 23077, 23052, 23049, 23403, 23640, 23472, 23475, 23478, 23476, 23470, 23477, 23481, 23480, 23556, 23633, 23637, 23632, 23789, 23805, 23803, 23786, 23784, 23792, 23798, 23809, 23796, 24046, 24109, 24107, 24235, 24237, 24231, 24369, 24466, 24465, 24464, 24665, 24675, 24677, 24656, 24661, 24685, 24681, 24687, 24708, 24735, 24730, 24717, 24724, 24716, 24709, 24726, 25159, 25331, 25352, 25343, 25422, 25406, 25391, 25429, 25410, 25414, 25423, 25417, 25402, 25424, 25405, 25386, 25387, 25384, 25421, 25420, 25928, 25929, 26009, 26049, 26053, 26178, 26185, 26191, 26179, 26194, 26188, 26181, 26177, 26360, 26388, 26389, 26391, 26657, 26680, 26696, 26694, 26707, 26681, 26690, 26708, 26665, 26803, 26647, 26700, 26705, 26685, 26612, 26704, 26688, 26684, 26691, 26666, 26693, 26643, 26648, 26689, 27530, 27529, 27575, 27683, 27687, 27688, 27686, 27684, 27888, 28010, 28053, 28040, 28039, 28006, 28024, 28023, 27993, 28051, 28012, 28041, 28014, 27994, 28020, 28009, 28044, 28042, 28025, 28037, 28005, 28052, 28874, 28888, 28900, 28889, 28872, 28879, 29241, 29305, 29436, 29433, 29437, 29432, 29431, 29574, 29677, 29705, 29678, 29664, 29674, 29662, 30036, 30045, 30044, 30042, 30041, 30142, 30149, 30151, 30130, 30131, 30141, 30140, 30137, 30146, 30136, 30347, 30384, 30410, 30413, 30414, 30505, 30495, 30496, 30504, 30697, 30768, 30759, 30776, 30749, 30772, 30775, 30757, 30765, 30752, 30751, 30770, 31061, 31056, 31072, 31071, 31062, 31070, 31069, 31063, 31066, 31204, 31203, 31207, 31199, 31206, 31209, 31192, 31364, 31368, 31449, 31494, 31505, 31881, 32033, 32023, 32011, 32010, 32032, 32034, 32020, 32016, 32021, 32026, 32028, 32013, 32025, 32027, 32570, 32607, 32660, 32709, 32705, 32774, 32792, 32789, 32793, 32791, 32829, 32831, 33009, 33026, 33008, 33029, 33005, 33012, 33030, 33016, 33011, 33032, 33021, 33034, 33020, 33007, 33261, 33260, 33280, 33296, 33322, 33323, 33320, 33324, 33467, 33579, 33618, 33620, 33610, 33592, 33616, 33609, 33589, 33588, 33615, 33586, 33593, 33590, 33559, 33600, 33585, 33576, 33603, 34388, 34442, 34474, 34451, 34468, 34473, 34444, 34467, 34460, 34928, 34935, 34945, 34946, 34941, 34937, 35352, 35344, 35342, 35340, 35349, 35338, 35351, 35347, 35350, 35343, 35345, 35912, 35962, 35961, 36001, 36002, 36215, 36524, 36562, 36564, 36559, 36785, 36865, 36870, 36855, 36864, 36858, 36852, 36867, 36861, 36869, 36856, 37013, 37089, 37085, 37090, 37202, 37197, 37196, 37336, 37341, 37335, 37340, 37337, 38275, 38498, 38499, 38497, 38491, 38493, 38500, 38488, 38494, 38587, 39138, 39340, 39592, 39640, 39717, 39730, 39740, 20094, 20602, 20605, 20572, 20551, 20547, 20556, 20570, 20553, 20581, 20598, 20558, 20565, 20597, 20596, 20599, 20559, 20495, 20591, 20589, 20828, 20885, 20976, 21098, 21103, 21202, 21209, 21208, 21205, 21264, 21263, 21273, 21311, 21312, 21310, 21443, 26364, 21830, 21866, 21862, 21828, 21854, 21857, 21827, 21834, 21809, 21846, 21839, 21845, 21807, 21860, 21816, 21806, 21852, 21804, 21859, 21811, 21825, 21847, 22280, 22283, 22281, 22495, 22533, 22538, 22534, 22496, 22500, 22522, 22530, 22581, 22519, 22521, 22816, 22882, 23094, 23105, 23113, 23142, 23146, 23104, 23100, 23138, 23130, 23110, 23114, 23408, 23495, 23493, 23492, 23490, 23487, 23494, 23561, 23560, 23559, 23648, 23644, 23645, 23815, 23814, 23822, 23835, 23830, 23842, 23825, 23849, 23828, 23833, 23844, 23847, 23831, 24034, 24120, 24118, 24115, 24119, 24247, 24248, 24246, 24245, 24254, 24373, 24375, 24407, 24428, 24425, 24427, 24471, 24473, 24478, 24472, 24481, 24480, 24476, 24703, 24739, 24713, 24736, 24744, 24779, 24756, 24806, 24765, 24773, 24763, 24757, 24796, 24764, 24792, 24789, 24774, 24799, 24760, 24794, 24775, 25114, 25115, 25160, 25504, 25511, 25458, 25494, 25506, 25509, 25463, 25447, 25496, 25514, 25457, 25513, 25481, 25475, 25499, 25451, 25512, 25476, 25480, 25497, 25505, 25516, 25490, 25487, 25472, 25467, 25449, 25448, 25466, 25949, 25942, 25937, 25945, 25943, 21855, 25935, 25944, 25941, 25940, 26012, 26011, 26028, 26063, 26059, 26060, 26062, 26205, 26202, 26212, 26216, 26214, 26206, 26361, 21207, 26395, 26753, 26799, 26786, 26771, 26805, 26751, 26742, 26801, 26791, 26775, 26800, 26755, 26820, 26797, 26758, 26757, 26772, 26781, 26792, 26783, 26785, 26754, 27442, 27578, 27627, 27628, 27691, 28046, 28092, 28147, 28121, 28082, 28129, 28108, 28132, 28155, 28154, 28165, 28103, 28107, 28079, 28113, 28078, 28126, 28153, 28088, 28151, 28149, 28101, 28114, 28186, 28085, 28122, 28139, 28120, 28138, 28145, 28142, 28136, 28102, 28100, 28074, 28140, 28095, 28134, 28921, 28937, 28938, 28925, 28911, 29245, 29309, 29313, 29468, 29467, 29462, 29459, 29465, 29575, 29701, 29706, 29699, 29702, 29694, 29709, 29920, 29942, 29943, 29980, 29986, 30053, 30054, 30050, 30064, 30095, 30164, 30165, 30133, 30154, 30157, 30350, 30420, 30418, 30427, 30519, 30526, 30524, 30518, 30520, 30522, 30827, 30787, 30798, 31077, 31080, 31085, 31227, 31378, 31381, 31520, 31528, 31515, 31532, 31526, 31513, 31518, 31534, 31890, 31895, 31893, 32070, 32067, 32113, 32046, 32057, 32060, 32064, 32048, 32051, 32068, 32047, 32066, 32050, 32049, 32573, 32670, 32666, 32716, 32718, 32722, 32796, 32842, 32838, 33071, 33046, 33059, 33067, 33065, 33072, 33060, 33282, 33333, 33335, 33334, 33337, 33678, 33694, 33688, 33656, 33698, 33686, 33725, 33707, 33682, 33674, 33683, 33673, 33696, 33655, 33659, 33660, 33670, 33703, 34389, 24426, 34503, 34496, 34486, 34500, 34485, 34502, 34507, 34481, 34479, 34505, 34899, 34974, 34952, 34987, 34962, 34966, 34957, 34955, 35219, 35215, 35370, 35357, 35363, 35365, 35377, 35373, 35359, 35355, 35362, 35913, 35930, 36009, 36012, 36011, 36008, 36010, 36007, 36199, 36198, 36286, 36282, 36571, 36575, 36889, 36877, 36890, 36887, 36899, 36895, 36893, 36880, 36885, 36894, 36896, 36879, 36898, 36886, 36891, 36884, 37096, 37101, 37117, 37207, 37326, 37365, 37350, 37347, 37351, 37357, 37353, 38281, 38506, 38517, 38515, 38520, 38512, 38516, 38518, 38519, 38508, 38592, 38634, 38633, 31456, 31455, 38914, 38915, 39770, 40165, 40565, 40575, 40613, 40635, 20642, 20621, 20613, 20633, 20625, 20608, 20630, 20632, 20634, 26368, 20977, 21106, 21108, 21109, 21097, 21214, 21213, 21211, 21338, 21413, 21883, 21888, 21927, 21884, 21898, 21917, 21912, 21890, 21916, 21930, 21908, 21895, 21899, 21891, 21939, 21934, 21919, 21822, 21938, 21914, 21947, 21932, 21937, 21886, 21897, 21931, 21913, 22285, 22575, 22570, 22580, 22564, 22576, 22577, 22561, 22557, 22560, 22777, 22778, 22880, 23159, 23194, 23167, 23186, 23195, 23207, 23411, 23409, 23506, 23500, 23507, 23504, 23562, 23563, 23601, 23884, 23888, 23860, 23879, 24061, 24133, 24125, 24128, 24131, 24190, 24266, 24257, 24258, 24260, 24380, 24429, 24489, 24490, 24488, 24785, 24801, 24754, 24758, 24800, 24860, 24867, 24826, 24853, 24816, 24827, 24820, 24936, 24817, 24846, 24822, 24841, 24832, 24850, 25119, 25161, 25507, 25484, 25551, 25536, 25577, 25545, 25542, 25549, 25554, 25571, 25552, 25569, 25558, 25581, 25582, 25462, 25588, 25578, 25563, 25682, 25562, 25593, 25950, 25958, 25954, 25955, 26001, 26e3, 26031, 26222, 26224, 26228, 26230, 26223, 26257, 26234, 26238, 26231, 26366, 26367, 26399, 26397, 26874, 26837, 26848, 26840, 26839, 26885, 26847, 26869, 26862, 26855, 26873, 26834, 26866, 26851, 26827, 26829, 26893, 26898, 26894, 26825, 26842, 26990, 26875, 27454, 27450, 27453, 27544, 27542, 27580, 27631, 27694, 27695, 27692, 28207, 28216, 28244, 28193, 28210, 28263, 28234, 28192, 28197, 28195, 28187, 28251, 28248, 28196, 28246, 28270, 28205, 28198, 28271, 28212, 28237, 28218, 28204, 28227, 28189, 28222, 28363, 28297, 28185, 28238, 28259, 28228, 28274, 28265, 28255, 28953, 28954, 28966, 28976, 28961, 28982, 29038, 28956, 29260, 29316, 29312, 29494, 29477, 29492, 29481, 29754, 29738, 29747, 29730, 29733, 29749, 29750, 29748, 29743, 29723, 29734, 29736, 29989, 29990, 30059, 30058, 30178, 30171, 30179, 30169, 30168, 30174, 30176, 30331, 30332, 30358, 30355, 30388, 30428, 30543, 30701, 30813, 30828, 30831, 31245, 31240, 31243, 31237, 31232, 31384, 31383, 31382, 31461, 31459, 31561, 31574, 31558, 31568, 31570, 31572, 31565, 31563, 31567, 31569, 31903, 31909, 32094, 32080, 32104, 32085, 32043, 32110, 32114, 32097, 32102, 32098, 32112, 32115, 21892, 32724, 32725, 32779, 32850, 32901, 33109, 33108, 33099, 33105, 33102, 33081, 33094, 33086, 33100, 33107, 33140, 33298, 33308, 33769, 33795, 33784, 33805, 33760, 33733, 33803, 33729, 33775, 33777, 33780, 33879, 33802, 33776, 33804, 33740, 33789, 33778, 33738, 33848, 33806, 33796, 33756, 33799, 33748, 33759, 34395, 34527, 34521, 34541, 34516, 34523, 34532, 34512, 34526, 34903, 35009, 35010, 34993, 35203, 35222, 35387, 35424, 35413, 35422, 35388, 35393, 35412, 35419, 35408, 35398, 35380, 35386, 35382, 35414, 35937, 35970, 36015, 36028, 36019, 36029, 36033, 36027, 36032, 36020, 36023, 36022, 36031, 36024, 36234, 36229, 36225, 36302, 36317, 36299, 36314, 36305, 36300, 36315, 36294, 36603, 36600, 36604, 36764, 36910, 36917, 36913, 36920, 36914, 36918, 37122, 37109, 37129, 37118, 37219, 37221, 37327, 37396, 37397, 37411, 37385, 37406, 37389, 37392, 37383, 37393, 38292, 38287, 38283, 38289, 38291, 38290, 38286, 38538, 38542, 38539, 38525, 38533, 38534, 38541, 38514, 38532, 38593, 38597, 38596, 38598, 38599, 38639, 38642, 38860, 38917, 38918, 38920, 39143, 39146, 39151, 39145, 39154, 39149, 39342, 39341, 40643, 40653, 40657, 20098, 20653, 20661, 20658, 20659, 20677, 20670, 20652, 20663, 20667, 20655, 20679, 21119, 21111, 21117, 21215, 21222, 21220, 21218, 21219, 21295, 21983, 21992, 21971, 21990, 21966, 21980, 21959, 21969, 21987, 21988, 21999, 21978, 21985, 21957, 21958, 21989, 21961, 22290, 22291, 22622, 22609, 22616, 22615, 22618, 22612, 22635, 22604, 22637, 22602, 22626, 22610, 22603, 22887, 23233, 23241, 23244, 23230, 23229, 23228, 23219, 23234, 23218, 23913, 23919, 24140, 24185, 24265, 24264, 24338, 24409, 24492, 24494, 24858, 24847, 24904, 24863, 24819, 24859, 24825, 24833, 24840, 24910, 24908, 24900, 24909, 24894, 24884, 24871, 24845, 24838, 24887, 25121, 25122, 25619, 25662, 25630, 25642, 25645, 25661, 25644, 25615, 25628, 25620, 25613, 25654, 25622, 25623, 25606, 25964, 26015, 26032, 26263, 26249, 26247, 26248, 26262, 26244, 26264, 26253, 26371, 27028, 26989, 26970, 26999, 26976, 26964, 26997, 26928, 27010, 26954, 26984, 26987, 26974, 26963, 27001, 27014, 26973, 26979, 26971, 27463, 27506, 27584, 27583, 27603, 27645, 28322, 28335, 28371, 28342, 28354, 28304, 28317, 28359, 28357, 28325, 28312, 28348, 28346, 28331, 28369, 28310, 28316, 28356, 28372, 28330, 28327, 28340, 29006, 29017, 29033, 29028, 29001, 29031, 29020, 29036, 29030, 29004, 29029, 29022, 28998, 29032, 29014, 29242, 29266, 29495, 29509, 29503, 29502, 29807, 29786, 29781, 29791, 29790, 29761, 29759, 29785, 29787, 29788, 30070, 30072, 30208, 30192, 30209, 30194, 30193, 30202, 30207, 30196, 30195, 30430, 30431, 30555, 30571, 30566, 30558, 30563, 30585, 30570, 30572, 30556, 30565, 30568, 30562, 30702, 30862, 30896, 30871, 30872, 30860, 30857, 30844, 30865, 30867, 30847, 31098, 31103, 31105, 33836, 31165, 31260, 31258, 31264, 31252, 31263, 31262, 31391, 31392, 31607, 31680, 31584, 31598, 31591, 31921, 31923, 31925, 32147, 32121, 32145, 32129, 32143, 32091, 32622, 32617, 32618, 32626, 32681, 32680, 32676, 32854, 32856, 32902, 32900, 33137, 33136, 33144, 33125, 33134, 33139, 33131, 33145, 33146, 33126, 33285, 33351, 33922, 33911, 33853, 33841, 33909, 33894, 33899, 33865, 33900, 33883, 33852, 33845, 33889, 33891, 33897, 33901, 33862, 34398, 34396, 34399, 34553, 34579, 34568, 34567, 34560, 34558, 34555, 34562, 34563, 34566, 34570, 34905, 35039, 35028, 35033, 35036, 35032, 35037, 35041, 35018, 35029, 35026, 35228, 35299, 35435, 35442, 35443, 35430, 35433, 35440, 35463, 35452, 35427, 35488, 35441, 35461, 35437, 35426, 35438, 35436, 35449, 35451, 35390, 35432, 35938, 35978, 35977, 36042, 36039, 36040, 36036, 36018, 36035, 36034, 36037, 36321, 36319, 36328, 36335, 36339, 36346, 36330, 36324, 36326, 36530, 36611, 36617, 36606, 36618, 36767, 36786, 36939, 36938, 36947, 36930, 36948, 36924, 36949, 36944, 36935, 36943, 36942, 36941, 36945, 36926, 36929, 37138, 37143, 37228, 37226, 37225, 37321, 37431, 37463, 37432, 37437, 37440, 37438, 37467, 37451, 37476, 37457, 37428, 37449, 37453, 37445, 37433, 37439, 37466, 38296, 38552, 38548, 38549, 38605, 38603, 38601, 38602, 38647, 38651, 38649, 38646, 38742, 38772, 38774, 38928, 38929, 38931, 38922, 38930, 38924, 39164, 39156, 39165, 39166, 39347, 39345, 39348, 39649, 40169, 40578, 40718, 40723, 40736, 20711, 20718, 20709, 20694, 20717, 20698, 20693, 20687, 20689, 20721, 20686, 20713, 20834, 20979, 21123, 21122, 21297, 21421, 22014, 22016, 22043, 22039, 22013, 22036, 22022, 22025, 22029, 22030, 22007, 22038, 22047, 22024, 22032, 22006, 22296, 22294, 22645, 22654, 22659, 22675, 22666, 22649, 22661, 22653, 22781, 22821, 22818, 22820, 22890, 22889, 23265, 23270, 23273, 23255, 23254, 23256, 23267, 23413, 23518, 23527, 23521, 23525, 23526, 23528, 23522, 23524, 23519, 23565, 23650, 23940, 23943, 24155, 24163, 24149, 24151, 24148, 24275, 24278, 24330, 24390, 24432, 24505, 24903, 24895, 24907, 24951, 24930, 24931, 24927, 24922, 24920, 24949, 25130, 25735, 25688, 25684, 25764, 25720, 25695, 25722, 25681, 25703, 25652, 25709, 25723, 25970, 26017, 26071, 26070, 26274, 26280, 26269, 27036, 27048, 27029, 27073, 27054, 27091, 27083, 27035, 27063, 27067, 27051, 27060, 27088, 27085, 27053, 27084, 27046, 27075, 27043, 27465, 27468, 27699, 28467, 28436, 28414, 28435, 28404, 28457, 28478, 28448, 28460, 28431, 28418, 28450, 28415, 28399, 28422, 28465, 28472, 28466, 28451, 28437, 28459, 28463, 28552, 28458, 28396, 28417, 28402, 28364, 28407, 29076, 29081, 29053, 29066, 29060, 29074, 29246, 29330, 29334, 29508, 29520, 29796, 29795, 29802, 29808, 29805, 29956, 30097, 30247, 30221, 30219, 30217, 30227, 30433, 30435, 30596, 30589, 30591, 30561, 30913, 30879, 30887, 30899, 30889, 30883, 31118, 31119, 31117, 31278, 31281, 31402, 31401, 31469, 31471, 31649, 31637, 31627, 31605, 31639, 31645, 31636, 31631, 31672, 31623, 31620, 31929, 31933, 31934, 32187, 32176, 32156, 32189, 32190, 32160, 32202, 32180, 32178, 32177, 32186, 32162, 32191, 32181, 32184, 32173, 32210, 32199, 32172, 32624, 32736, 32737, 32735, 32862, 32858, 32903, 33104, 33152, 33167, 33160, 33162, 33151, 33154, 33255, 33274, 33287, 33300, 33310, 33355, 33993, 33983, 33990, 33988, 33945, 33950, 33970, 33948, 33995, 33976, 33984, 34003, 33936, 33980, 34001, 33994, 34623, 34588, 34619, 34594, 34597, 34612, 34584, 34645, 34615, 34601, 35059, 35074, 35060, 35065, 35064, 35069, 35048, 35098, 35055, 35494, 35468, 35486, 35491, 35469, 35489, 35475, 35492, 35498, 35493, 35496, 35480, 35473, 35482, 35495, 35946, 35981, 35980, 36051, 36049, 36050, 36203, 36249, 36245, 36348, 36628, 36626, 36629, 36627, 36771, 36960, 36952, 36956, 36963, 36953, 36958, 36962, 36957, 36955, 37145, 37144, 37150, 37237, 37240, 37239, 37236, 37496, 37504, 37509, 37528, 37526, 37499, 37523, 37532, 37544, 37500, 37521, 38305, 38312, 38313, 38307, 38309, 38308, 38553, 38556, 38555, 38604, 38610, 38656, 38780, 38789, 38902, 38935, 38936, 39087, 39089, 39171, 39173, 39180, 39177, 39361, 39599, 39600, 39654, 39745, 39746, 40180, 40182, 40179, 40636, 40763, 40778, 20740, 20736, 20731, 20725, 20729, 20738, 20744, 20745, 20741, 20956, 21127, 21128, 21129, 21133, 21130, 21232, 21426, 22062, 22075, 22073, 22066, 22079, 22068, 22057, 22099, 22094, 22103, 22132, 22070, 22063, 22064, 22656, 22687, 22686, 22707, 22684, 22702, 22697, 22694, 22893, 23305, 23291, 23307, 23285, 23308, 23304, 23534, 23532, 23529, 23531, 23652, 23653, 23965, 23956, 24162, 24159, 24161, 24290, 24282, 24287, 24285, 24291, 24288, 24392, 24433, 24503, 24501, 24950, 24935, 24942, 24925, 24917, 24962, 24956, 24944, 24939, 24958, 24999, 24976, 25003, 24974, 25004, 24986, 24996, 24980, 25006, 25134, 25705, 25711, 25721, 25758, 25778, 25736, 25744, 25776, 25765, 25747, 25749, 25769, 25746, 25774, 25773, 25771, 25754, 25772, 25753, 25762, 25779, 25973, 25975, 25976, 26286, 26283, 26292, 26289, 27171, 27167, 27112, 27137, 27166, 27161, 27133, 27169, 27155, 27146, 27123, 27138, 27141, 27117, 27153, 27472, 27470, 27556, 27589, 27590, 28479, 28540, 28548, 28497, 28518, 28500, 28550, 28525, 28507, 28536, 28526, 28558, 28538, 28528, 28516, 28567, 28504, 28373, 28527, 28512, 28511, 29087, 29100, 29105, 29096, 29270, 29339, 29518, 29527, 29801, 29835, 29827, 29822, 29824, 30079, 30240, 30249, 30239, 30244, 30246, 30241, 30242, 30362, 30394, 30436, 30606, 30599, 30604, 30609, 30603, 30923, 30917, 30906, 30922, 30910, 30933, 30908, 30928, 31295, 31292, 31296, 31293, 31287, 31291, 31407, 31406, 31661, 31665, 31684, 31668, 31686, 31687, 31681, 31648, 31692, 31946, 32224, 32244, 32239, 32251, 32216, 32236, 32221, 32232, 32227, 32218, 32222, 32233, 32158, 32217, 32242, 32249, 32629, 32631, 32687, 32745, 32806, 33179, 33180, 33181, 33184, 33178, 33176, 34071, 34109, 34074, 34030, 34092, 34093, 34067, 34065, 34083, 34081, 34068, 34028, 34085, 34047, 34054, 34690, 34676, 34678, 34656, 34662, 34680, 34664, 34649, 34647, 34636, 34643, 34907, 34909, 35088, 35079, 35090, 35091, 35093, 35082, 35516, 35538, 35527, 35524, 35477, 35531, 35576, 35506, 35529, 35522, 35519, 35504, 35542, 35533, 35510, 35513, 35547, 35916, 35918, 35948, 36064, 36062, 36070, 36068, 36076, 36077, 36066, 36067, 36060, 36074, 36065, 36205, 36255, 36259, 36395, 36368, 36381, 36386, 36367, 36393, 36383, 36385, 36382, 36538, 36637, 36635, 36639, 36649, 36646, 36650, 36636, 36638, 36645, 36969, 36974, 36968, 36973, 36983, 37168, 37165, 37159, 37169, 37255, 37257, 37259, 37251, 37573, 37563, 37559, 37610, 37548, 37604, 37569, 37555, 37564, 37586, 37575, 37616, 37554, 38317, 38321, 38660, 38662, 38663, 38665, 38752, 38797, 38795, 38799, 38945, 38955, 38940, 39091, 39178, 39187, 39186, 39192, 39389, 39376, 39391, 39387, 39377, 39381, 39378, 39385, 39607, 39662, 39663, 39719, 39749, 39748, 39799, 39791, 40198, 40201, 40195, 40617, 40638, 40654, 22696, 40786, 20754, 20760, 20756, 20752, 20757, 20864, 20906, 20957, 21137, 21139, 21235, 22105, 22123, 22137, 22121, 22116, 22136, 22122, 22120, 22117, 22129, 22127, 22124, 22114, 22134, 22721, 22718, 22727, 22725, 22894, 23325, 23348, 23416, 23536, 23566, 24394, 25010, 24977, 25001, 24970, 25037, 25014, 25022, 25034, 25032, 25136, 25797, 25793, 25803, 25787, 25788, 25818, 25796, 25799, 25794, 25805, 25791, 25810, 25812, 25790, 25972, 26310, 26313, 26297, 26308, 26311, 26296, 27197, 27192, 27194, 27225, 27243, 27224, 27193, 27204, 27234, 27233, 27211, 27207, 27189, 27231, 27208, 27481, 27511, 27653, 28610, 28593, 28577, 28611, 28580, 28609, 28583, 28595, 28608, 28601, 28598, 28582, 28576, 28596, 29118, 29129, 29136, 29138, 29128, 29141, 29113, 29134, 29145, 29148, 29123, 29124, 29544, 29852, 29859, 29848, 29855, 29854, 29922, 29964, 29965, 30260, 30264, 30266, 30439, 30437, 30624, 30622, 30623, 30629, 30952, 30938, 30956, 30951, 31142, 31309, 31310, 31302, 31308, 31307, 31418, 31705, 31761, 31689, 31716, 31707, 31713, 31721, 31718, 31957, 31958, 32266, 32273, 32264, 32283, 32291, 32286, 32285, 32265, 32272, 32633, 32690, 32752, 32753, 32750, 32808, 33203, 33193, 33192, 33275, 33288, 33368, 33369, 34122, 34137, 34120, 34152, 34153, 34115, 34121, 34157, 34154, 34142, 34691, 34719, 34718, 34722, 34701, 34913, 35114, 35122, 35109, 35115, 35105, 35242, 35238, 35558, 35578, 35563, 35569, 35584, 35548, 35559, 35566, 35582, 35585, 35586, 35575, 35565, 35571, 35574, 35580, 35947, 35949, 35987, 36084, 36420, 36401, 36404, 36418, 36409, 36405, 36667, 36655, 36664, 36659, 36776, 36774, 36981, 36980, 36984, 36978, 36988, 36986, 37172, 37266, 37664, 37686, 37624, 37683, 37679, 37666, 37628, 37675, 37636, 37658, 37648, 37670, 37665, 37653, 37678, 37657, 38331, 38567, 38568, 38570, 38613, 38670, 38673, 38678, 38669, 38675, 38671, 38747, 38748, 38758, 38808, 38960, 38968, 38971, 38967, 38957, 38969, 38948, 39184, 39208, 39198, 39195, 39201, 39194, 39405, 39394, 39409, 39608, 39612, 39675, 39661, 39720, 39825, 40213, 40227, 40230, 40232, 40210, 40219, 40664, 40660, 40845, 40860, 20778, 20767, 20769, 20786, 21237, 22158, 22144, 22160, 22149, 22151, 22159, 22741, 22739, 22737, 22734, 23344, 23338, 23332, 23418, 23607, 23656, 23996, 23994, 23997, 23992, 24171, 24396, 24509, 25033, 25026, 25031, 25062, 25035, 25138, 25140, 25806, 25802, 25816, 25824, 25840, 25830, 25836, 25841, 25826, 25837, 25986, 25987, 26329, 26326, 27264, 27284, 27268, 27298, 27292, 27355, 27299, 27262, 27287, 27280, 27296, 27484, 27566, 27610, 27656, 28632, 28657, 28639, 28640, 28635, 28644, 28651, 28655, 28544, 28652, 28641, 28649, 28629, 28654, 28656, 29159, 29151, 29166, 29158, 29157, 29165, 29164, 29172, 29152, 29237, 29254, 29552, 29554, 29865, 29872, 29862, 29864, 30278, 30274, 30284, 30442, 30643, 30634, 30640, 30636, 30631, 30637, 30703, 30967, 30970, 30964, 30959, 30977, 31143, 31146, 31319, 31423, 31751, 31757, 31742, 31735, 31756, 31712, 31968, 31964, 31966, 31970, 31967, 31961, 31965, 32302, 32318, 32326, 32311, 32306, 32323, 32299, 32317, 32305, 32325, 32321, 32308, 32313, 32328, 32309, 32319, 32303, 32580, 32755, 32764, 32881, 32882, 32880, 32879, 32883, 33222, 33219, 33210, 33218, 33216, 33215, 33213, 33225, 33214, 33256, 33289, 33393, 34218, 34180, 34174, 34204, 34193, 34196, 34223, 34203, 34183, 34216, 34186, 34407, 34752, 34769, 34739, 34770, 34758, 34731, 34747, 34746, 34760, 34763, 35131, 35126, 35140, 35128, 35133, 35244, 35598, 35607, 35609, 35611, 35594, 35616, 35613, 35588, 35600, 35905, 35903, 35955, 36090, 36093, 36092, 36088, 36091, 36264, 36425, 36427, 36424, 36426, 36676, 36670, 36674, 36677, 36671, 36991, 36989, 36996, 36993, 36994, 36992, 37177, 37283, 37278, 37276, 37709, 37762, 37672, 37749, 37706, 37733, 37707, 37656, 37758, 37740, 37723, 37744, 37722, 37716, 38346, 38347, 38348, 38344, 38342, 38577, 38584, 38614, 38684, 38686, 38816, 38867, 38982, 39094, 39221, 39425, 39423, 39854, 39851, 39850, 39853, 40251, 40255, 40587, 40655, 40670, 40668, 40669, 40667, 40766, 40779, 21474, 22165, 22190, 22745, 22744, 23352, 24413, 25059, 25139, 25844, 25842, 25854, 25862, 25850, 25851, 25847, 26039, 26332, 26406, 27315, 27308, 27331, 27323, 27320, 27330, 27310, 27311, 27487, 27512, 27567, 28681, 28683, 28670, 28678, 28666, 28689, 28687, 29179, 29180, 29182, 29176, 29559, 29557, 29863, 29887, 29973, 30294, 30296, 30290, 30653, 30655, 30651, 30652, 30990, 31150, 31329, 31330, 31328, 31428, 31429, 31787, 31783, 31786, 31774, 31779, 31777, 31975, 32340, 32341, 32350, 32346, 32353, 32338, 32345, 32584, 32761, 32763, 32887, 32886, 33229, 33231, 33290, 34255, 34217, 34253, 34256, 34249, 34224, 34234, 34233, 34214, 34799, 34796, 34802, 34784, 35206, 35250, 35316, 35624, 35641, 35628, 35627, 35920, 36101, 36441, 36451, 36454, 36452, 36447, 36437, 36544, 36681, 36685, 36999, 36995, 37e3, 37291, 37292, 37328, 37780, 37770, 37782, 37794, 37811, 37806, 37804, 37808, 37784, 37786, 37783, 38356, 38358, 38352, 38357, 38626, 38620, 38617, 38619, 38622, 38692, 38819, 38822, 38829, 38905, 38989, 38991, 38988, 38990, 38995, 39098, 39230, 39231, 39229, 39214, 39333, 39438, 39617, 39683, 39686, 39759, 39758, 39757, 39882, 39881, 39933, 39880, 39872, 40273, 40285, 40288, 40672, 40725, 40748, 20787, 22181, 22750, 22751, 22754, 23541, 40848, 24300, 25074, 25079, 25078, 25077, 25856, 25871, 26336, 26333, 27365, 27357, 27354, 27347, 28699, 28703, 28712, 28698, 28701, 28693, 28696, 29190, 29197, 29272, 29346, 29560, 29562, 29885, 29898, 29923, 30087, 30086, 30303, 30305, 30663, 31001, 31153, 31339, 31337, 31806, 31807, 31800, 31805, 31799, 31808, 32363, 32365, 32377, 32361, 32362, 32645, 32371, 32694, 32697, 32696, 33240, 34281, 34269, 34282, 34261, 34276, 34277, 34295, 34811, 34821, 34829, 34809, 34814, 35168, 35167, 35158, 35166, 35649, 35676, 35672, 35657, 35674, 35662, 35663, 35654, 35673, 36104, 36106, 36476, 36466, 36487, 36470, 36460, 36474, 36468, 36692, 36686, 36781, 37002, 37003, 37297, 37294, 37857, 37841, 37855, 37827, 37832, 37852, 37853, 37846, 37858, 37837, 37848, 37860, 37847, 37864, 38364, 38580, 38627, 38698, 38695, 38753, 38876, 38907, 39006, 39e3, 39003, 39100, 39237, 39241, 39446, 39449, 39693, 39912, 39911, 39894, 39899, 40329, 40289, 40306, 40298, 40300, 40594, 40599, 40595, 40628, 21240, 22184, 22199, 22198, 22196, 22204, 22756, 23360, 23363, 23421, 23542, 24009, 25080, 25082, 25880, 25876, 25881, 26342, 26407, 27372, 28734, 28720, 28722, 29200, 29563, 29903, 30306, 30309, 31014, 31018, 31020, 31019, 31431, 31478, 31820, 31811, 31821, 31983, 31984, 36782, 32381, 32380, 32386, 32588, 32768, 33242, 33382, 34299, 34297, 34321, 34298, 34310, 34315, 34311, 34314, 34836, 34837, 35172, 35258, 35320, 35696, 35692, 35686, 35695, 35679, 35691, 36111, 36109, 36489, 36481, 36485, 36482, 37300, 37323, 37912, 37891, 37885, 38369, 38704, 39108, 39250, 39249, 39336, 39467, 39472, 39479, 39477, 39955, 39949, 40569, 40629, 40680, 40751, 40799, 40803, 40801, 20791, 20792, 22209, 22208, 22210, 22804, 23660, 24013, 25084, 25086, 25885, 25884, 26005, 26345, 27387, 27396, 27386, 27570, 28748, 29211, 29351, 29910, 29908, 30313, 30675, 31824, 32399, 32396, 32700, 34327, 34349, 34330, 34851, 34850, 34849, 34847, 35178, 35180, 35261, 35700, 35703, 35709, 36115, 36490, 36493, 36491, 36703, 36783, 37306, 37934, 37939, 37941, 37946, 37944, 37938, 37931, 38370, 38712, 38713, 38706, 38911, 39015, 39013, 39255, 39493, 39491, 39488, 39486, 39631, 39764, 39761, 39981, 39973, 40367, 40372, 40386, 40376, 40605, 40687, 40729, 40796, 40806, 40807, 20796, 20795, 22216, 22218, 22217, 23423, 24020, 24018, 24398, 25087, 25892, 27402, 27489, 28753, 28760, 29568, 29924, 30090, 30318, 30316, 31155, 31840, 31839, 32894, 32893, 33247, 35186, 35183, 35324, 35712, 36118, 36119, 36497, 36499, 36705, 37192, 37956, 37969, 37970, 38717, 38718, 38851, 38849, 39019, 39253, 39509, 39501, 39634, 39706, 40009, 39985, 39998, 39995, 40403, 40407, 40756, 40812, 40810, 40852, 22220, 24022, 25088, 25891, 25899, 25898, 26348, 27408, 29914, 31434, 31844, 31843, 31845, 32403, 32406, 32404, 33250, 34360, 34367, 34865, 35722, 37008, 37007, 37987, 37984, 37988, 38760, 39023, 39260, 39514, 39515, 39511, 39635, 39636, 39633, 40020, 40023, 40022, 40421, 40607, 40692, 22225, 22761, 25900, 28766, 30321, 30322, 30679, 32592, 32648, 34870, 34873, 34914, 35731, 35730, 35734, 33399, 36123, 37312, 37994, 38722, 38728, 38724, 38854, 39024, 39519, 39714, 39768, 40031, 40441, 40442, 40572, 40573, 40711, 40823, 40818, 24307, 27414, 28771, 31852, 31854, 34875, 35264, 36513, 37313, 38002, 38e3, 39025, 39262, 39638, 39715, 40652, 28772, 30682, 35738, 38007, 38857, 39522, 39525, 32412, 35740, 36522, 37317, 38013, 38014, 38012, 40055, 40056, 40695, 35924, 38015, 40474, 29224, 39530, 39729, 40475, 40478, 31858, 9312, 9313, 9314, 9315, 9316, 9317, 9318, 9319, 9320, 9321, 9332, 9333, 9334, 9335, 9336, 9337, 9338, 9339, 9340, 9341, 8560, 8561, 8562, 8563, 8564, 8565, 8566, 8567, 8568, 8569, 20022, 20031, 20101, 20128, 20866, 20886, 20907, 21241, 21304, 21353, 21430, 22794, 23424, 24027, 12083, 24191, 24308, 24400, 24417, 25908, 26080, 30098, 30326, 36789, 38582, 168, 710, 12541, 12542, 12445, 12446, 12291, 20189, 12293, 12294, 12295, 12540, 65339, 65341, 10045, 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, 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, 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, 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, 8679, 8632, 8633, 12751, 131276, 20058, 131210, 20994, 17553, 40880, 20872, 40881, 161287, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 65506, 65508, 65287, 65282, 12849, 8470, 8481, 12443, 12444, 11904, 11908, 11910, 11911, 11912, 11914, 11916, 11917, 11925, 11932, 11933, 11941, 11943, 11946, 11948, 11950, 11958, 11964, 11966, 11974, 11978, 11980, 11981, 11983, 11990, 11991, 11998, 12003, null, null, null, 643, 592, 603, 596, 629, 339, 248, 331, 650, 618, 20034, 20060, 20981, 21274, 21378, 19975, 19980, 20039, 20109, 22231, 64012, 23662, 24435, 19983, 20871, 19982, 20014, 20115, 20162, 20169, 20168, 20888, 21244, 21356, 21433, 22304, 22787, 22828, 23568, 24063, 26081, 27571, 27596, 27668, 29247, 20017, 20028, 20200, 20188, 20201, 20193, 20189, 20186, 21004, 21276, 21324, 22306, 22307, 22807, 22831, 23425, 23428, 23570, 23611, 23668, 23667, 24068, 24192, 24194, 24521, 25097, 25168, 27669, 27702, 27715, 27711, 27707, 29358, 29360, 29578, 31160, 32906, 38430, 20238, 20248, 20268, 20213, 20244, 20209, 20224, 20215, 20232, 20253, 20226, 20229, 20258, 20243, 20228, 20212, 20242, 20913, 21011, 21001, 21008, 21158, 21282, 21279, 21325, 21386, 21511, 22241, 22239, 22318, 22314, 22324, 22844, 22912, 22908, 22917, 22907, 22910, 22903, 22911, 23382, 23573, 23589, 23676, 23674, 23675, 23678, 24031, 24181, 24196, 24322, 24346, 24436, 24533, 24532, 24527, 25180, 25182, 25188, 25185, 25190, 25186, 25177, 25184, 25178, 25189, 26095, 26094, 26430, 26425, 26424, 26427, 26426, 26431, 26428, 26419, 27672, 27718, 27730, 27740, 27727, 27722, 27732, 27723, 27724, 28785, 29278, 29364, 29365, 29582, 29994, 30335, 31349, 32593, 33400, 33404, 33408, 33405, 33407, 34381, 35198, 37017, 37015, 37016, 37019, 37012, 38434, 38436, 38432, 38435, 20310, 20283, 20322, 20297, 20307, 20324, 20286, 20327, 20306, 20319, 20289, 20312, 20269, 20275, 20287, 20321, 20879, 20921, 21020, 21022, 21025, 21165, 21166, 21257, 21347, 21362, 21390, 21391, 21552, 21559, 21546, 21588, 21573, 21529, 21532, 21541, 21528, 21565, 21583, 21569, 21544, 21540, 21575, 22254, 22247, 22245, 22337, 22341, 22348, 22345, 22347, 22354, 22790, 22848, 22950, 22936, 22944, 22935, 22926, 22946, 22928, 22927, 22951, 22945, 23438, 23442, 23592, 23594, 23693, 23695, 23688, 23691, 23689, 23698, 23690, 23686, 23699, 23701, 24032, 24074, 24078, 24203, 24201, 24204, 24200, 24205, 24325, 24349, 24440, 24438, 24530, 24529, 24528, 24557, 24552, 24558, 24563, 24545, 24548, 24547, 24570, 24559, 24567, 24571, 24576, 24564, 25146, 25219, 25228, 25230, 25231, 25236, 25223, 25201, 25211, 25210, 25200, 25217, 25224, 25207, 25213, 25202, 25204, 25911, 26096, 26100, 26099, 26098, 26101, 26437, 26439, 26457, 26453, 26444, 26440, 26461, 26445, 26458, 26443, 27600, 27673, 27674, 27768, 27751, 27755, 27780, 27787, 27791, 27761, 27759, 27753, 27802, 27757, 27783, 27797, 27804, 27750, 27763, 27749, 27771, 27790, 28788, 28794, 29283, 29375, 29373, 29379, 29382, 29377, 29370, 29381, 29589, 29591, 29587, 29588, 29586, 30010, 30009, 30100, 30101, 30337, 31037, 32820, 32917, 32921, 32912, 32914, 32924, 33424, 33423, 33413, 33422, 33425, 33427, 33418, 33411, 33412, 35960, 36809, 36799, 37023, 37025, 37029, 37022, 37031, 37024, 38448, 38440, 38447, 38445, 20019, 20376, 20348, 20357, 20349, 20352, 20359, 20342, 20340, 20361, 20356, 20343, 20300, 20375, 20330, 20378, 20345, 20353, 20344, 20368, 20380, 20372, 20382, 20370, 20354, 20373, 20331, 20334, 20894, 20924, 20926, 21045, 21042, 21043, 21062, 21041, 21180, 21258, 21259, 21308, 21394, 21396, 21639, 21631, 21633, 21649, 21634, 21640, 21611, 21626, 21630, 21605, 21612, 21620, 21606, 21645, 21615, 21601, 21600, 21656, 21603, 21607, 21604, 22263, 22265, 22383, 22386, 22381, 22379, 22385, 22384, 22390, 22400, 22389, 22395, 22387, 22388, 22370, 22376, 22397, 22796, 22853, 22965, 22970, 22991, 22990, 22962, 22988, 22977, 22966, 22972, 22979, 22998, 22961, 22973, 22976, 22984, 22964, 22983, 23394, 23397, 23443, 23445, 23620, 23623, 23726, 23716, 23712, 23733, 23727, 23720, 23724, 23711, 23715, 23725, 23714, 23722, 23719, 23709, 23717, 23734, 23728, 23718, 24087, 24084, 24089, 24360, 24354, 24355, 24356, 24404, 24450, 24446, 24445, 24542, 24549, 24621, 24614, 24601, 24626, 24587, 24628, 24586, 24599, 24627, 24602, 24606, 24620, 24610, 24589, 24592, 24622, 24595, 24593, 24588, 24585, 24604, 25108, 25149, 25261, 25268, 25297, 25278, 25258, 25270, 25290, 25262, 25267, 25263, 25275, 25257, 25264, 25272, 25917, 26024, 26043, 26121, 26108, 26116, 26130, 26120, 26107, 26115, 26123, 26125, 26117, 26109, 26129, 26128, 26358, 26378, 26501, 26476, 26510, 26514, 26486, 26491, 26520, 26502, 26500, 26484, 26509, 26508, 26490, 26527, 26513, 26521, 26499, 26493, 26497, 26488, 26489, 26516, 27429, 27520, 27518, 27614, 27677, 27795, 27884, 27883, 27886, 27865, 27830, 27860, 27821, 27879, 27831, 27856, 27842, 27834, 27843, 27846, 27885, 27890, 27858, 27869, 27828, 27786, 27805, 27776, 27870, 27840, 27952, 27853, 27847, 27824, 27897, 27855, 27881, 27857, 28820, 28824, 28805, 28819, 28806, 28804, 28817, 28822, 28802, 28826, 28803, 29290, 29398, 29387, 29400, 29385, 29404, 29394, 29396, 29402, 29388, 29393, 29604, 29601, 29613, 29606, 29602, 29600, 29612, 29597, 29917, 29928, 30015, 30016, 30014, 30092, 30104, 30383, 30451, 30449, 30448, 30453, 30712, 30716, 30713, 30715, 30714, 30711, 31042, 31039, 31173, 31352, 31355, 31483, 31861, 31997, 32821, 32911, 32942, 32931, 32952, 32949, 32941, 33312, 33440, 33472, 33451, 33434, 33432, 33435, 33461, 33447, 33454, 33468, 33438, 33466, 33460, 33448, 33441, 33449, 33474, 33444, 33475, 33462, 33442, 34416, 34415, 34413, 34414, 35926, 36818, 36811, 36819, 36813, 36822, 36821, 36823, 37042, 37044, 37039, 37043, 37040, 38457, 38461, 38460, 38458, 38467, 20429, 20421, 20435, 20402, 20425, 20427, 20417, 20436, 20444, 20441, 20411, 20403, 20443, 20423, 20438, 20410, 20416, 20409, 20460, 21060, 21065, 21184, 21186, 21309, 21372, 21399, 21398, 21401, 21400, 21690, 21665, 21677, 21669, 21711, 21699, 33549, 21687, 21678, 21718, 21686, 21701, 21702, 21664, 21616, 21692, 21666, 21694, 21618, 21726, 21680, 22453, 22430, 22431, 22436, 22412, 22423, 22429, 22427, 22420, 22424, 22415, 22425, 22437, 22426, 22421, 22772, 22797, 22867, 23009, 23006, 23022, 23040, 23025, 23005, 23034, 23037, 23036, 23030, 23012, 23026, 23031, 23003, 23017, 23027, 23029, 23008, 23038, 23028, 23021, 23464, 23628, 23760, 23768, 23756, 23767, 23755, 23771, 23774, 23770, 23753, 23751, 23754, 23766, 23763, 23764, 23759, 23752, 23750, 23758, 23775, 23800, 24057, 24097, 24098, 24099, 24096, 24100, 24240, 24228, 24226, 24219, 24227, 24229, 24327, 24366, 24406, 24454, 24631, 24633, 24660, 24690, 24670, 24645, 24659, 24647, 24649, 24667, 24652, 24640, 24642, 24671, 24612, 24644, 24664, 24678, 24686, 25154, 25155, 25295, 25357, 25355, 25333, 25358, 25347, 25323, 25337, 25359, 25356, 25336, 25334, 25344, 25363, 25364, 25338, 25365, 25339, 25328, 25921, 25923, 26026, 26047, 26166, 26145, 26162, 26165, 26140, 26150, 26146, 26163, 26155, 26170, 26141, 26164, 26169, 26158, 26383, 26384, 26561, 26610, 26568, 26554, 26588, 26555, 26616, 26584, 26560, 26551, 26565, 26603, 26596, 26591, 26549, 26573, 26547, 26615, 26614, 26606, 26595, 26562, 26553, 26574, 26599, 26608, 26546, 26620, 26566, 26605, 26572, 26542, 26598, 26587, 26618, 26569, 26570, 26563, 26602, 26571, 27432, 27522, 27524, 27574, 27606, 27608, 27616, 27680, 27681, 27944, 27956, 27949, 27935, 27964, 27967, 27922, 27914, 27866, 27955, 27908, 27929, 27962, 27930, 27921, 27904, 27933, 27970, 27905, 27928, 27959, 27907, 27919, 27968, 27911, 27936, 27948, 27912, 27938, 27913, 27920, 28855, 28831, 28862, 28849, 28848, 28833, 28852, 28853, 28841, 29249, 29257, 29258, 29292, 29296, 29299, 29294, 29386, 29412, 29416, 29419, 29407, 29418, 29414, 29411, 29573, 29644, 29634, 29640, 29637, 29625, 29622, 29621, 29620, 29675, 29631, 29639, 29630, 29635, 29638, 29624, 29643, 29932, 29934, 29998, 30023, 30024, 30119, 30122, 30329, 30404, 30472, 30467, 30468, 30469, 30474, 30455, 30459, 30458, 30695, 30696, 30726, 30737, 30738, 30725, 30736, 30735, 30734, 30729, 30723, 30739, 31050, 31052, 31051, 31045, 31044, 31189, 31181, 31183, 31190, 31182, 31360, 31358, 31441, 31488, 31489, 31866, 31864, 31865, 31871, 31872, 31873, 32003, 32008, 32001, 32600, 32657, 32653, 32702, 32775, 32782, 32783, 32788, 32823, 32984, 32967, 32992, 32977, 32968, 32962, 32976, 32965, 32995, 32985, 32988, 32970, 32981, 32969, 32975, 32983, 32998, 32973, 33279, 33313, 33428, 33497, 33534, 33529, 33543, 33512, 33536, 33493, 33594, 33515, 33494, 33524, 33516, 33505, 33522, 33525, 33548, 33531, 33526, 33520, 33514, 33508, 33504, 33530, 33523, 33517, 34423, 34420, 34428, 34419, 34881, 34894, 34919, 34922, 34921, 35283, 35332, 35335, 36210, 36835, 36833, 36846, 36832, 37105, 37053, 37055, 37077, 37061, 37054, 37063, 37067, 37064, 37332, 37331, 38484, 38479, 38481, 38483, 38474, 38478, 20510, 20485, 20487, 20499, 20514, 20528, 20507, 20469, 20468, 20531, 20535, 20524, 20470, 20471, 20503, 20508, 20512, 20519, 20533, 20527, 20529, 20494, 20826, 20884, 20883, 20938, 20932, 20933, 20936, 20942, 21089, 21082, 21074, 21086, 21087, 21077, 21090, 21197, 21262, 21406, 21798, 21730, 21783, 21778, 21735, 21747, 21732, 21786, 21759, 21764, 21768, 21739, 21777, 21765, 21745, 21770, 21755, 21751, 21752, 21728, 21774, 21763, 21771, 22273, 22274, 22476, 22578, 22485, 22482, 22458, 22470, 22461, 22460, 22456, 22454, 22463, 22471, 22480, 22457, 22465, 22798, 22858, 23065, 23062, 23085, 23086, 23061, 23055, 23063, 23050, 23070, 23091, 23404, 23463, 23469, 23468, 23555, 23638, 23636, 23788, 23807, 23790, 23793, 23799, 23808, 23801, 24105, 24104, 24232, 24238, 24234, 24236, 24371, 24368, 24423, 24669, 24666, 24679, 24641, 24738, 24712, 24704, 24722, 24705, 24733, 24707, 24725, 24731, 24727, 24711, 24732, 24718, 25113, 25158, 25330, 25360, 25430, 25388, 25412, 25413, 25398, 25411, 25572, 25401, 25419, 25418, 25404, 25385, 25409, 25396, 25432, 25428, 25433, 25389, 25415, 25395, 25434, 25425, 25400, 25431, 25408, 25416, 25930, 25926, 26054, 26051, 26052, 26050, 26186, 26207, 26183, 26193, 26386, 26387, 26655, 26650, 26697, 26674, 26675, 26683, 26699, 26703, 26646, 26673, 26652, 26677, 26667, 26669, 26671, 26702, 26692, 26676, 26653, 26642, 26644, 26662, 26664, 26670, 26701, 26682, 26661, 26656, 27436, 27439, 27437, 27441, 27444, 27501, 32898, 27528, 27622, 27620, 27624, 27619, 27618, 27623, 27685, 28026, 28003, 28004, 28022, 27917, 28001, 28050, 27992, 28002, 28013, 28015, 28049, 28045, 28143, 28031, 28038, 27998, 28007, 28e3, 28055, 28016, 28028, 27999, 28034, 28056, 27951, 28008, 28043, 28030, 28032, 28036, 27926, 28035, 28027, 28029, 28021, 28048, 28892, 28883, 28881, 28893, 28875, 32569, 28898, 28887, 28882, 28894, 28896, 28884, 28877, 28869, 28870, 28871, 28890, 28878, 28897, 29250, 29304, 29303, 29302, 29440, 29434, 29428, 29438, 29430, 29427, 29435, 29441, 29651, 29657, 29669, 29654, 29628, 29671, 29667, 29673, 29660, 29650, 29659, 29652, 29661, 29658, 29655, 29656, 29672, 29918, 29919, 29940, 29941, 29985, 30043, 30047, 30128, 30145, 30139, 30148, 30144, 30143, 30134, 30138, 30346, 30409, 30493, 30491, 30480, 30483, 30482, 30499, 30481, 30485, 30489, 30490, 30498, 30503, 30755, 30764, 30754, 30773, 30767, 30760, 30766, 30763, 30753, 30761, 30771, 30762, 30769, 31060, 31067, 31055, 31068, 31059, 31058, 31057, 31211, 31212, 31200, 31214, 31213, 31210, 31196, 31198, 31197, 31366, 31369, 31365, 31371, 31372, 31370, 31367, 31448, 31504, 31492, 31507, 31493, 31503, 31496, 31498, 31502, 31497, 31506, 31876, 31889, 31882, 31884, 31880, 31885, 31877, 32030, 32029, 32017, 32014, 32024, 32022, 32019, 32031, 32018, 32015, 32012, 32604, 32609, 32606, 32608, 32605, 32603, 32662, 32658, 32707, 32706, 32704, 32790, 32830, 32825, 33018, 33010, 33017, 33013, 33025, 33019, 33024, 33281, 33327, 33317, 33587, 33581, 33604, 33561, 33617, 33573, 33622, 33599, 33601, 33574, 33564, 33570, 33602, 33614, 33563, 33578, 33544, 33596, 33613, 33558, 33572, 33568, 33591, 33583, 33577, 33607, 33605, 33612, 33619, 33566, 33580, 33611, 33575, 33608, 34387, 34386, 34466, 34472, 34454, 34445, 34449, 34462, 34439, 34455, 34438, 34443, 34458, 34437, 34469, 34457, 34465, 34471, 34453, 34456, 34446, 34461, 34448, 34452, 34883, 34884, 34925, 34933, 34934, 34930, 34944, 34929, 34943, 34927, 34947, 34942, 34932, 34940, 35346, 35911, 35927, 35963, 36004, 36003, 36214, 36216, 36277, 36279, 36278, 36561, 36563, 36862, 36853, 36866, 36863, 36859, 36868, 36860, 36854, 37078, 37088, 37081, 37082, 37091, 37087, 37093, 37080, 37083, 37079, 37084, 37092, 37200, 37198, 37199, 37333, 37346, 37338, 38492, 38495, 38588, 39139, 39647, 39727, 20095, 20592, 20586, 20577, 20574, 20576, 20563, 20555, 20573, 20594, 20552, 20557, 20545, 20571, 20554, 20578, 20501, 20549, 20575, 20585, 20587, 20579, 20580, 20550, 20544, 20590, 20595, 20567, 20561, 20944, 21099, 21101, 21100, 21102, 21206, 21203, 21293, 21404, 21877, 21878, 21820, 21837, 21840, 21812, 21802, 21841, 21858, 21814, 21813, 21808, 21842, 21829, 21772, 21810, 21861, 21838, 21817, 21832, 21805, 21819, 21824, 21835, 22282, 22279, 22523, 22548, 22498, 22518, 22492, 22516, 22528, 22509, 22525, 22536, 22520, 22539, 22515, 22479, 22535, 22510, 22499, 22514, 22501, 22508, 22497, 22542, 22524, 22544, 22503, 22529, 22540, 22513, 22505, 22512, 22541, 22532, 22876, 23136, 23128, 23125, 23143, 23134, 23096, 23093, 23149, 23120, 23135, 23141, 23148, 23123, 23140, 23127, 23107, 23133, 23122, 23108, 23131, 23112, 23182, 23102, 23117, 23097, 23116, 23152, 23145, 23111, 23121, 23126, 23106, 23132, 23410, 23406, 23489, 23488, 23641, 23838, 23819, 23837, 23834, 23840, 23820, 23848, 23821, 23846, 23845, 23823, 23856, 23826, 23843, 23839, 23854, 24126, 24116, 24241, 24244, 24249, 24242, 24243, 24374, 24376, 24475, 24470, 24479, 24714, 24720, 24710, 24766, 24752, 24762, 24787, 24788, 24783, 24804, 24793, 24797, 24776, 24753, 24795, 24759, 24778, 24767, 24771, 24781, 24768, 25394, 25445, 25482, 25474, 25469, 25533, 25502, 25517, 25501, 25495, 25515, 25486, 25455, 25479, 25488, 25454, 25519, 25461, 25500, 25453, 25518, 25468, 25508, 25403, 25503, 25464, 25477, 25473, 25489, 25485, 25456, 25939, 26061, 26213, 26209, 26203, 26201, 26204, 26210, 26392, 26745, 26759, 26768, 26780, 26733, 26734, 26798, 26795, 26966, 26735, 26787, 26796, 26793, 26741, 26740, 26802, 26767, 26743, 26770, 26748, 26731, 26738, 26794, 26752, 26737, 26750, 26779, 26774, 26763, 26784, 26761, 26788, 26744, 26747, 26769, 26764, 26762, 26749, 27446, 27443, 27447, 27448, 27537, 27535, 27533, 27534, 27532, 27690, 28096, 28075, 28084, 28083, 28276, 28076, 28137, 28130, 28087, 28150, 28116, 28160, 28104, 28128, 28127, 28118, 28094, 28133, 28124, 28125, 28123, 28148, 28106, 28093, 28141, 28144, 28090, 28117, 28098, 28111, 28105, 28112, 28146, 28115, 28157, 28119, 28109, 28131, 28091, 28922, 28941, 28919, 28951, 28916, 28940, 28912, 28932, 28915, 28944, 28924, 28927, 28934, 28947, 28928, 28920, 28918, 28939, 28930, 28942, 29310, 29307, 29308, 29311, 29469, 29463, 29447, 29457, 29464, 29450, 29448, 29439, 29455, 29470, 29576, 29686, 29688, 29685, 29700, 29697, 29693, 29703, 29696, 29690, 29692, 29695, 29708, 29707, 29684, 29704, 30052, 30051, 30158, 30162, 30159, 30155, 30156, 30161, 30160, 30351, 30345, 30419, 30521, 30511, 30509, 30513, 30514, 30516, 30515, 30525, 30501, 30523, 30517, 30792, 30802, 30793, 30797, 30794, 30796, 30758, 30789, 30800, 31076, 31079, 31081, 31082, 31075, 31083, 31073, 31163, 31226, 31224, 31222, 31223, 31375, 31380, 31376, 31541, 31559, 31540, 31525, 31536, 31522, 31524, 31539, 31512, 31530, 31517, 31537, 31531, 31533, 31535, 31538, 31544, 31514, 31523, 31892, 31896, 31894, 31907, 32053, 32061, 32056, 32054, 32058, 32069, 32044, 32041, 32065, 32071, 32062, 32063, 32074, 32059, 32040, 32611, 32661, 32668, 32669, 32667, 32714, 32715, 32717, 32720, 32721, 32711, 32719, 32713, 32799, 32798, 32795, 32839, 32835, 32840, 33048, 33061, 33049, 33051, 33069, 33055, 33068, 33054, 33057, 33045, 33063, 33053, 33058, 33297, 33336, 33331, 33338, 33332, 33330, 33396, 33680, 33699, 33704, 33677, 33658, 33651, 33700, 33652, 33679, 33665, 33685, 33689, 33653, 33684, 33705, 33661, 33667, 33676, 33693, 33691, 33706, 33675, 33662, 33701, 33711, 33672, 33687, 33712, 33663, 33702, 33671, 33710, 33654, 33690, 34393, 34390, 34495, 34487, 34498, 34497, 34501, 34490, 34480, 34504, 34489, 34483, 34488, 34508, 34484, 34491, 34492, 34499, 34493, 34494, 34898, 34953, 34965, 34984, 34978, 34986, 34970, 34961, 34977, 34975, 34968, 34983, 34969, 34971, 34967, 34980, 34988, 34956, 34963, 34958, 35202, 35286, 35289, 35285, 35376, 35367, 35372, 35358, 35897, 35899, 35932, 35933, 35965, 36005, 36221, 36219, 36217, 36284, 36290, 36281, 36287, 36289, 36568, 36574, 36573, 36572, 36567, 36576, 36577, 36900, 36875, 36881, 36892, 36876, 36897, 37103, 37098, 37104, 37108, 37106, 37107, 37076, 37099, 37100, 37097, 37206, 37208, 37210, 37203, 37205, 37356, 37364, 37361, 37363, 37368, 37348, 37369, 37354, 37355, 37367, 37352, 37358, 38266, 38278, 38280, 38524, 38509, 38507, 38513, 38511, 38591, 38762, 38916, 39141, 39319, 20635, 20629, 20628, 20638, 20619, 20643, 20611, 20620, 20622, 20637, 20584, 20636, 20626, 20610, 20615, 20831, 20948, 21266, 21265, 21412, 21415, 21905, 21928, 21925, 21933, 21879, 22085, 21922, 21907, 21896, 21903, 21941, 21889, 21923, 21906, 21924, 21885, 21900, 21926, 21887, 21909, 21921, 21902, 22284, 22569, 22583, 22553, 22558, 22567, 22563, 22568, 22517, 22600, 22565, 22556, 22555, 22579, 22591, 22582, 22574, 22585, 22584, 22573, 22572, 22587, 22881, 23215, 23188, 23199, 23162, 23202, 23198, 23160, 23206, 23164, 23205, 23212, 23189, 23214, 23095, 23172, 23178, 23191, 23171, 23179, 23209, 23163, 23165, 23180, 23196, 23183, 23187, 23197, 23530, 23501, 23499, 23508, 23505, 23498, 23502, 23564, 23600, 23863, 23875, 23915, 23873, 23883, 23871, 23861, 23889, 23886, 23893, 23859, 23866, 23890, 23869, 23857, 23897, 23874, 23865, 23881, 23864, 23868, 23858, 23862, 23872, 23877, 24132, 24129, 24408, 24486, 24485, 24491, 24777, 24761, 24780, 24802, 24782, 24772, 24852, 24818, 24842, 24854, 24837, 24821, 24851, 24824, 24828, 24830, 24769, 24835, 24856, 24861, 24848, 24831, 24836, 24843, 25162, 25492, 25521, 25520, 25550, 25573, 25576, 25583, 25539, 25757, 25587, 25546, 25568, 25590, 25557, 25586, 25589, 25697, 25567, 25534, 25565, 25564, 25540, 25560, 25555, 25538, 25543, 25548, 25547, 25544, 25584, 25559, 25561, 25906, 25959, 25962, 25956, 25948, 25960, 25957, 25996, 26013, 26014, 26030, 26064, 26066, 26236, 26220, 26235, 26240, 26225, 26233, 26218, 26226, 26369, 26892, 26835, 26884, 26844, 26922, 26860, 26858, 26865, 26895, 26838, 26871, 26859, 26852, 26870, 26899, 26896, 26867, 26849, 26887, 26828, 26888, 26992, 26804, 26897, 26863, 26822, 26900, 26872, 26832, 26877, 26876, 26856, 26891, 26890, 26903, 26830, 26824, 26845, 26846, 26854, 26868, 26833, 26886, 26836, 26857, 26901, 26917, 26823, 27449, 27451, 27455, 27452, 27540, 27543, 27545, 27541, 27581, 27632, 27634, 27635, 27696, 28156, 28230, 28231, 28191, 28233, 28296, 28220, 28221, 28229, 28258, 28203, 28223, 28225, 28253, 28275, 28188, 28211, 28235, 28224, 28241, 28219, 28163, 28206, 28254, 28264, 28252, 28257, 28209, 28200, 28256, 28273, 28267, 28217, 28194, 28208, 28243, 28261, 28199, 28280, 28260, 28279, 28245, 28281, 28242, 28262, 28213, 28214, 28250, 28960, 28958, 28975, 28923, 28974, 28977, 28963, 28965, 28962, 28978, 28959, 28968, 28986, 28955, 29259, 29274, 29320, 29321, 29318, 29317, 29323, 29458, 29451, 29488, 29474, 29489, 29491, 29479, 29490, 29485, 29478, 29475, 29493, 29452, 29742, 29740, 29744, 29739, 29718, 29722, 29729, 29741, 29745, 29732, 29731, 29725, 29737, 29728, 29746, 29947, 29999, 30063, 30060, 30183, 30170, 30177, 30182, 30173, 30175, 30180, 30167, 30357, 30354, 30426, 30534, 30535, 30532, 30541, 30533, 30538, 30542, 30539, 30540, 30686, 30700, 30816, 30820, 30821, 30812, 30829, 30833, 30826, 30830, 30832, 30825, 30824, 30814, 30818, 31092, 31091, 31090, 31088, 31234, 31242, 31235, 31244, 31236, 31385, 31462, 31460, 31562, 31547, 31556, 31560, 31564, 31566, 31552, 31576, 31557, 31906, 31902, 31912, 31905, 32088, 32111, 32099, 32083, 32086, 32103, 32106, 32079, 32109, 32092, 32107, 32082, 32084, 32105, 32081, 32095, 32078, 32574, 32575, 32613, 32614, 32674, 32672, 32673, 32727, 32849, 32847, 32848, 33022, 32980, 33091, 33098, 33106, 33103, 33095, 33085, 33101, 33082, 33254, 33262, 33271, 33272, 33273, 33284, 33340, 33341, 33343, 33397, 33595, 33743, 33785, 33827, 33728, 33768, 33810, 33767, 33764, 33788, 33782, 33808, 33734, 33736, 33771, 33763, 33727, 33793, 33757, 33765, 33752, 33791, 33761, 33739, 33742, 33750, 33781, 33737, 33801, 33807, 33758, 33809, 33798, 33730, 33779, 33749, 33786, 33735, 33745, 33770, 33811, 33731, 33772, 33774, 33732, 33787, 33751, 33762, 33819, 33755, 33790, 34520, 34530, 34534, 34515, 34531, 34522, 34538, 34525, 34539, 34524, 34540, 34537, 34519, 34536, 34513, 34888, 34902, 34901, 35002, 35031, 35001, 35e3, 35008, 35006, 34998, 35004, 34999, 35005, 34994, 35073, 35017, 35221, 35224, 35223, 35293, 35290, 35291, 35406, 35405, 35385, 35417, 35392, 35415, 35416, 35396, 35397, 35410, 35400, 35409, 35402, 35404, 35407, 35935, 35969, 35968, 36026, 36030, 36016, 36025, 36021, 36228, 36224, 36233, 36312, 36307, 36301, 36295, 36310, 36316, 36303, 36309, 36313, 36296, 36311, 36293, 36591, 36599, 36602, 36601, 36582, 36590, 36581, 36597, 36583, 36584, 36598, 36587, 36593, 36588, 36596, 36585, 36909, 36916, 36911, 37126, 37164, 37124, 37119, 37116, 37128, 37113, 37115, 37121, 37120, 37127, 37125, 37123, 37217, 37220, 37215, 37218, 37216, 37377, 37386, 37413, 37379, 37402, 37414, 37391, 37388, 37376, 37394, 37375, 37373, 37382, 37380, 37415, 37378, 37404, 37412, 37401, 37399, 37381, 37398, 38267, 38285, 38284, 38288, 38535, 38526, 38536, 38537, 38531, 38528, 38594, 38600, 38595, 38641, 38640, 38764, 38768, 38766, 38919, 39081, 39147, 40166, 40697, 20099, 20100, 20150, 20669, 20671, 20678, 20654, 20676, 20682, 20660, 20680, 20674, 20656, 20673, 20666, 20657, 20683, 20681, 20662, 20664, 20951, 21114, 21112, 21115, 21116, 21955, 21979, 21964, 21968, 21963, 21962, 21981, 21952, 21972, 21956, 21993, 21951, 21970, 21901, 21967, 21973, 21986, 21974, 21960, 22002, 21965, 21977, 21954, 22292, 22611, 22632, 22628, 22607, 22605, 22601, 22639, 22613, 22606, 22621, 22617, 22629, 22619, 22589, 22627, 22641, 22780, 23239, 23236, 23243, 23226, 23224, 23217, 23221, 23216, 23231, 23240, 23227, 23238, 23223, 23232, 23242, 23220, 23222, 23245, 23225, 23184, 23510, 23512, 23513, 23583, 23603, 23921, 23907, 23882, 23909, 23922, 23916, 23902, 23912, 23911, 23906, 24048, 24143, 24142, 24138, 24141, 24139, 24261, 24268, 24262, 24267, 24263, 24384, 24495, 24493, 24823, 24905, 24906, 24875, 24901, 24886, 24882, 24878, 24902, 24879, 24911, 24873, 24896, 25120, 37224, 25123, 25125, 25124, 25541, 25585, 25579, 25616, 25618, 25609, 25632, 25636, 25651, 25667, 25631, 25621, 25624, 25657, 25655, 25634, 25635, 25612, 25638, 25648, 25640, 25665, 25653, 25647, 25610, 25626, 25664, 25637, 25639, 25611, 25575, 25627, 25646, 25633, 25614, 25967, 26002, 26067, 26246, 26252, 26261, 26256, 26251, 26250, 26265, 26260, 26232, 26400, 26982, 26975, 26936, 26958, 26978, 26993, 26943, 26949, 26986, 26937, 26946, 26967, 26969, 27002, 26952, 26953, 26933, 26988, 26931, 26941, 26981, 26864, 27e3, 26932, 26985, 26944, 26991, 26948, 26998, 26968, 26945, 26996, 26956, 26939, 26955, 26935, 26972, 26959, 26961, 26930, 26962, 26927, 27003, 26940, 27462, 27461, 27459, 27458, 27464, 27457, 27547, 64013, 27643, 27644, 27641, 27639, 27640, 28315, 28374, 28360, 28303, 28352, 28319, 28307, 28308, 28320, 28337, 28345, 28358, 28370, 28349, 28353, 28318, 28361, 28343, 28336, 28365, 28326, 28367, 28338, 28350, 28355, 28380, 28376, 28313, 28306, 28302, 28301, 28324, 28321, 28351, 28339, 28368, 28362, 28311, 28334, 28323, 28999, 29012, 29010, 29027, 29024, 28993, 29021, 29026, 29042, 29048, 29034, 29025, 28994, 29016, 28995, 29003, 29040, 29023, 29008, 29011, 28996, 29005, 29018, 29263, 29325, 29324, 29329, 29328, 29326, 29500, 29506, 29499, 29498, 29504, 29514, 29513, 29764, 29770, 29771, 29778, 29777, 29783, 29760, 29775, 29776, 29774, 29762, 29766, 29773, 29780, 29921, 29951, 29950, 29949, 29981, 30073, 30071, 27011, 30191, 30223, 30211, 30199, 30206, 30204, 30201, 30200, 30224, 30203, 30198, 30189, 30197, 30205, 30361, 30389, 30429, 30549, 30559, 30560, 30546, 30550, 30554, 30569, 30567, 30548, 30553, 30573, 30688, 30855, 30874, 30868, 30863, 30852, 30869, 30853, 30854, 30881, 30851, 30841, 30873, 30848, 30870, 30843, 31100, 31106, 31101, 31097, 31249, 31256, 31257, 31250, 31255, 31253, 31266, 31251, 31259, 31248, 31395, 31394, 31390, 31467, 31590, 31588, 31597, 31604, 31593, 31602, 31589, 31603, 31601, 31600, 31585, 31608, 31606, 31587, 31922, 31924, 31919, 32136, 32134, 32128, 32141, 32127, 32133, 32122, 32142, 32123, 32131, 32124, 32140, 32148, 32132, 32125, 32146, 32621, 32619, 32615, 32616, 32620, 32678, 32677, 32679, 32731, 32732, 32801, 33124, 33120, 33143, 33116, 33129, 33115, 33122, 33138, 26401, 33118, 33142, 33127, 33135, 33092, 33121, 33309, 33353, 33348, 33344, 33346, 33349, 34033, 33855, 33878, 33910, 33913, 33935, 33933, 33893, 33873, 33856, 33926, 33895, 33840, 33869, 33917, 33882, 33881, 33908, 33907, 33885, 34055, 33886, 33847, 33850, 33844, 33914, 33859, 33912, 33842, 33861, 33833, 33753, 33867, 33839, 33858, 33837, 33887, 33904, 33849, 33870, 33868, 33874, 33903, 33989, 33934, 33851, 33863, 33846, 33843, 33896, 33918, 33860, 33835, 33888, 33876, 33902, 33872, 34571, 34564, 34551, 34572, 34554, 34518, 34549, 34637, 34552, 34574, 34569, 34561, 34550, 34573, 34565, 35030, 35019, 35021, 35022, 35038, 35035, 35034, 35020, 35024, 35205, 35227, 35295, 35301, 35300, 35297, 35296, 35298, 35292, 35302, 35446, 35462, 35455, 35425, 35391, 35447, 35458, 35460, 35445, 35459, 35457, 35444, 35450, 35900, 35915, 35914, 35941, 35940, 35942, 35974, 35972, 35973, 36044, 36200, 36201, 36241, 36236, 36238, 36239, 36237, 36243, 36244, 36240, 36242, 36336, 36320, 36332, 36337, 36334, 36304, 36329, 36323, 36322, 36327, 36338, 36331, 36340, 36614, 36607, 36609, 36608, 36613, 36615, 36616, 36610, 36619, 36946, 36927, 36932, 36937, 36925, 37136, 37133, 37135, 37137, 37142, 37140, 37131, 37134, 37230, 37231, 37448, 37458, 37424, 37434, 37478, 37427, 37477, 37470, 37507, 37422, 37450, 37446, 37485, 37484, 37455, 37472, 37479, 37487, 37430, 37473, 37488, 37425, 37460, 37475, 37456, 37490, 37454, 37459, 37452, 37462, 37426, 38303, 38300, 38302, 38299, 38546, 38547, 38545, 38551, 38606, 38650, 38653, 38648, 38645, 38771, 38775, 38776, 38770, 38927, 38925, 38926, 39084, 39158, 39161, 39343, 39346, 39344, 39349, 39597, 39595, 39771, 40170, 40173, 40167, 40576, 40701, 20710, 20692, 20695, 20712, 20723, 20699, 20714, 20701, 20708, 20691, 20716, 20720, 20719, 20707, 20704, 20952, 21120, 21121, 21225, 21227, 21296, 21420, 22055, 22037, 22028, 22034, 22012, 22031, 22044, 22017, 22035, 22018, 22010, 22045, 22020, 22015, 22009, 22665, 22652, 22672, 22680, 22662, 22657, 22655, 22644, 22667, 22650, 22663, 22673, 22670, 22646, 22658, 22664, 22651, 22676, 22671, 22782, 22891, 23260, 23278, 23269, 23253, 23274, 23258, 23277, 23275, 23283, 23266, 23264, 23259, 23276, 23262, 23261, 23257, 23272, 23263, 23415, 23520, 23523, 23651, 23938, 23936, 23933, 23942, 23930, 23937, 23927, 23946, 23945, 23944, 23934, 23932, 23949, 23929, 23935, 24152, 24153, 24147, 24280, 24273, 24279, 24270, 24284, 24277, 24281, 24274, 24276, 24388, 24387, 24431, 24502, 24876, 24872, 24897, 24926, 24945, 24947, 24914, 24915, 24946, 24940, 24960, 24948, 24916, 24954, 24923, 24933, 24891, 24938, 24929, 24918, 25129, 25127, 25131, 25643, 25677, 25691, 25693, 25716, 25718, 25714, 25715, 25725, 25717, 25702, 25766, 25678, 25730, 25694, 25692, 25675, 25683, 25696, 25680, 25727, 25663, 25708, 25707, 25689, 25701, 25719, 25971, 26016, 26273, 26272, 26271, 26373, 26372, 26402, 27057, 27062, 27081, 27040, 27086, 27030, 27056, 27052, 27068, 27025, 27033, 27022, 27047, 27021, 27049, 27070, 27055, 27071, 27076, 27069, 27044, 27092, 27065, 27082, 27034, 27087, 27059, 27027, 27050, 27041, 27038, 27097, 27031, 27024, 27074, 27061, 27045, 27078, 27466, 27469, 27467, 27550, 27551, 27552, 27587, 27588, 27646, 28366, 28405, 28401, 28419, 28453, 28408, 28471, 28411, 28462, 28425, 28494, 28441, 28442, 28455, 28440, 28475, 28434, 28397, 28426, 28470, 28531, 28409, 28398, 28461, 28480, 28464, 28476, 28469, 28395, 28423, 28430, 28483, 28421, 28413, 28406, 28473, 28444, 28412, 28474, 28447, 28429, 28446, 28424, 28449, 29063, 29072, 29065, 29056, 29061, 29058, 29071, 29051, 29062, 29057, 29079, 29252, 29267, 29335, 29333, 29331, 29507, 29517, 29521, 29516, 29794, 29811, 29809, 29813, 29810, 29799, 29806, 29952, 29954, 29955, 30077, 30096, 30230, 30216, 30220, 30229, 30225, 30218, 30228, 30392, 30593, 30588, 30597, 30594, 30574, 30592, 30575, 30590, 30595, 30898, 30890, 30900, 30893, 30888, 30846, 30891, 30878, 30885, 30880, 30892, 30882, 30884, 31128, 31114, 31115, 31126, 31125, 31124, 31123, 31127, 31112, 31122, 31120, 31275, 31306, 31280, 31279, 31272, 31270, 31400, 31403, 31404, 31470, 31624, 31644, 31626, 31633, 31632, 31638, 31629, 31628, 31643, 31630, 31621, 31640, 21124, 31641, 31652, 31618, 31931, 31935, 31932, 31930, 32167, 32183, 32194, 32163, 32170, 32193, 32192, 32197, 32157, 32206, 32196, 32198, 32203, 32204, 32175, 32185, 32150, 32188, 32159, 32166, 32174, 32169, 32161, 32201, 32627, 32738, 32739, 32741, 32734, 32804, 32861, 32860, 33161, 33158, 33155, 33159, 33165, 33164, 33163, 33301, 33943, 33956, 33953, 33951, 33978, 33998, 33986, 33964, 33966, 33963, 33977, 33972, 33985, 33997, 33962, 33946, 33969, 34e3, 33949, 33959, 33979, 33954, 33940, 33991, 33996, 33947, 33961, 33967, 33960, 34006, 33944, 33974, 33999, 33952, 34007, 34004, 34002, 34011, 33968, 33937, 34401, 34611, 34595, 34600, 34667, 34624, 34606, 34590, 34593, 34585, 34587, 34627, 34604, 34625, 34622, 34630, 34592, 34610, 34602, 34605, 34620, 34578, 34618, 34609, 34613, 34626, 34598, 34599, 34616, 34596, 34586, 34608, 34577, 35063, 35047, 35057, 35058, 35066, 35070, 35054, 35068, 35062, 35067, 35056, 35052, 35051, 35229, 35233, 35231, 35230, 35305, 35307, 35304, 35499, 35481, 35467, 35474, 35471, 35478, 35901, 35944, 35945, 36053, 36047, 36055, 36246, 36361, 36354, 36351, 36365, 36349, 36362, 36355, 36359, 36358, 36357, 36350, 36352, 36356, 36624, 36625, 36622, 36621, 37155, 37148, 37152, 37154, 37151, 37149, 37146, 37156, 37153, 37147, 37242, 37234, 37241, 37235, 37541, 37540, 37494, 37531, 37498, 37536, 37524, 37546, 37517, 37542, 37530, 37547, 37497, 37527, 37503, 37539, 37614, 37518, 37506, 37525, 37538, 37501, 37512, 37537, 37514, 37510, 37516, 37529, 37543, 37502, 37511, 37545, 37533, 37515, 37421, 38558, 38561, 38655, 38744, 38781, 38778, 38782, 38787, 38784, 38786, 38779, 38788, 38785, 38783, 38862, 38861, 38934, 39085, 39086, 39170, 39168, 39175, 39325, 39324, 39363, 39353, 39355, 39354, 39362, 39357, 39367, 39601, 39651, 39655, 39742, 39743, 39776, 39777, 39775, 40177, 40178, 40181, 40615, 20735, 20739, 20784, 20728, 20742, 20743, 20726, 20734, 20747, 20748, 20733, 20746, 21131, 21132, 21233, 21231, 22088, 22082, 22092, 22069, 22081, 22090, 22089, 22086, 22104, 22106, 22080, 22067, 22077, 22060, 22078, 22072, 22058, 22074, 22298, 22699, 22685, 22705, 22688, 22691, 22703, 22700, 22693, 22689, 22783, 23295, 23284, 23293, 23287, 23286, 23299, 23288, 23298, 23289, 23297, 23303, 23301, 23311, 23655, 23961, 23959, 23967, 23954, 23970, 23955, 23957, 23968, 23964, 23969, 23962, 23966, 24169, 24157, 24160, 24156, 32243, 24283, 24286, 24289, 24393, 24498, 24971, 24963, 24953, 25009, 25008, 24994, 24969, 24987, 24979, 25007, 25005, 24991, 24978, 25002, 24993, 24973, 24934, 25011, 25133, 25710, 25712, 25750, 25760, 25733, 25751, 25756, 25743, 25739, 25738, 25740, 25763, 25759, 25704, 25777, 25752, 25974, 25978, 25977, 25979, 26034, 26035, 26293, 26288, 26281, 26290, 26295, 26282, 26287, 27136, 27142, 27159, 27109, 27128, 27157, 27121, 27108, 27168, 27135, 27116, 27106, 27163, 27165, 27134, 27175, 27122, 27118, 27156, 27127, 27111, 27200, 27144, 27110, 27131, 27149, 27132, 27115, 27145, 27140, 27160, 27173, 27151, 27126, 27174, 27143, 27124, 27158, 27473, 27557, 27555, 27554, 27558, 27649, 27648, 27647, 27650, 28481, 28454, 28542, 28551, 28614, 28562, 28557, 28553, 28556, 28514, 28495, 28549, 28506, 28566, 28534, 28524, 28546, 28501, 28530, 28498, 28496, 28503, 28564, 28563, 28509, 28416, 28513, 28523, 28541, 28519, 28560, 28499, 28555, 28521, 28543, 28565, 28515, 28535, 28522, 28539, 29106, 29103, 29083, 29104, 29088, 29082, 29097, 29109, 29085, 29093, 29086, 29092, 29089, 29098, 29084, 29095, 29107, 29336, 29338, 29528, 29522, 29534, 29535, 29536, 29533, 29531, 29537, 29530, 29529, 29538, 29831, 29833, 29834, 29830, 29825, 29821, 29829, 29832, 29820, 29817, 29960, 29959, 30078, 30245, 30238, 30233, 30237, 30236, 30243, 30234, 30248, 30235, 30364, 30365, 30366, 30363, 30605, 30607, 30601, 30600, 30925, 30907, 30927, 30924, 30929, 30926, 30932, 30920, 30915, 30916, 30921, 31130, 31137, 31136, 31132, 31138, 31131, 27510, 31289, 31410, 31412, 31411, 31671, 31691, 31678, 31660, 31694, 31663, 31673, 31690, 31669, 31941, 31944, 31948, 31947, 32247, 32219, 32234, 32231, 32215, 32225, 32259, 32250, 32230, 32246, 32241, 32240, 32238, 32223, 32630, 32684, 32688, 32685, 32749, 32747, 32746, 32748, 32742, 32744, 32868, 32871, 33187, 33183, 33182, 33173, 33186, 33177, 33175, 33302, 33359, 33363, 33362, 33360, 33358, 33361, 34084, 34107, 34063, 34048, 34089, 34062, 34057, 34061, 34079, 34058, 34087, 34076, 34043, 34091, 34042, 34056, 34060, 34036, 34090, 34034, 34069, 34039, 34027, 34035, 34044, 34066, 34026, 34025, 34070, 34046, 34088, 34077, 34094, 34050, 34045, 34078, 34038, 34097, 34086, 34023, 34024, 34032, 34031, 34041, 34072, 34080, 34096, 34059, 34073, 34095, 34402, 34646, 34659, 34660, 34679, 34785, 34675, 34648, 34644, 34651, 34642, 34657, 34650, 34641, 34654, 34669, 34666, 34640, 34638, 34655, 34653, 34671, 34668, 34682, 34670, 34652, 34661, 34639, 34683, 34677, 34658, 34663, 34665, 34906, 35077, 35084, 35092, 35083, 35095, 35096, 35097, 35078, 35094, 35089, 35086, 35081, 35234, 35236, 35235, 35309, 35312, 35308, 35535, 35526, 35512, 35539, 35537, 35540, 35541, 35515, 35543, 35518, 35520, 35525, 35544, 35523, 35514, 35517, 35545, 35902, 35917, 35983, 36069, 36063, 36057, 36072, 36058, 36061, 36071, 36256, 36252, 36257, 36251, 36384, 36387, 36389, 36388, 36398, 36373, 36379, 36374, 36369, 36377, 36390, 36391, 36372, 36370, 36376, 36371, 36380, 36375, 36378, 36652, 36644, 36632, 36634, 36640, 36643, 36630, 36631, 36979, 36976, 36975, 36967, 36971, 37167, 37163, 37161, 37162, 37170, 37158, 37166, 37253, 37254, 37258, 37249, 37250, 37252, 37248, 37584, 37571, 37572, 37568, 37593, 37558, 37583, 37617, 37599, 37592, 37609, 37591, 37597, 37580, 37615, 37570, 37608, 37578, 37576, 37582, 37606, 37581, 37589, 37577, 37600, 37598, 37607, 37585, 37587, 37557, 37601, 37574, 37556, 38268, 38316, 38315, 38318, 38320, 38564, 38562, 38611, 38661, 38664, 38658, 38746, 38794, 38798, 38792, 38864, 38863, 38942, 38941, 38950, 38953, 38952, 38944, 38939, 38951, 39090, 39176, 39162, 39185, 39188, 39190, 39191, 39189, 39388, 39373, 39375, 39379, 39380, 39374, 39369, 39382, 39384, 39371, 39383, 39372, 39603, 39660, 39659, 39667, 39666, 39665, 39750, 39747, 39783, 39796, 39793, 39782, 39798, 39797, 39792, 39784, 39780, 39788, 40188, 40186, 40189, 40191, 40183, 40199, 40192, 40185, 40187, 40200, 40197, 40196, 40579, 40659, 40719, 40720, 20764, 20755, 20759, 20762, 20753, 20958, 21300, 21473, 22128, 22112, 22126, 22131, 22118, 22115, 22125, 22130, 22110, 22135, 22300, 22299, 22728, 22717, 22729, 22719, 22714, 22722, 22716, 22726, 23319, 23321, 23323, 23329, 23316, 23315, 23312, 23318, 23336, 23322, 23328, 23326, 23535, 23980, 23985, 23977, 23975, 23989, 23984, 23982, 23978, 23976, 23986, 23981, 23983, 23988, 24167, 24168, 24166, 24175, 24297, 24295, 24294, 24296, 24293, 24395, 24508, 24989, 25e3, 24982, 25029, 25012, 25030, 25025, 25036, 25018, 25023, 25016, 24972, 25815, 25814, 25808, 25807, 25801, 25789, 25737, 25795, 25819, 25843, 25817, 25907, 25983, 25980, 26018, 26312, 26302, 26304, 26314, 26315, 26319, 26301, 26299, 26298, 26316, 26403, 27188, 27238, 27209, 27239, 27186, 27240, 27198, 27229, 27245, 27254, 27227, 27217, 27176, 27226, 27195, 27199, 27201, 27242, 27236, 27216, 27215, 27220, 27247, 27241, 27232, 27196, 27230, 27222, 27221, 27213, 27214, 27206, 27477, 27476, 27478, 27559, 27562, 27563, 27592, 27591, 27652, 27651, 27654, 28589, 28619, 28579, 28615, 28604, 28622, 28616, 28510, 28612, 28605, 28574, 28618, 28584, 28676, 28581, 28590, 28602, 28588, 28586, 28623, 28607, 28600, 28578, 28617, 28587, 28621, 28591, 28594, 28592, 29125, 29122, 29119, 29112, 29142, 29120, 29121, 29131, 29140, 29130, 29127, 29135, 29117, 29144, 29116, 29126, 29146, 29147, 29341, 29342, 29545, 29542, 29543, 29548, 29541, 29547, 29546, 29823, 29850, 29856, 29844, 29842, 29845, 29857, 29963, 30080, 30255, 30253, 30257, 30269, 30259, 30268, 30261, 30258, 30256, 30395, 30438, 30618, 30621, 30625, 30620, 30619, 30626, 30627, 30613, 30617, 30615, 30941, 30953, 30949, 30954, 30942, 30947, 30939, 30945, 30946, 30957, 30943, 30944, 31140, 31300, 31304, 31303, 31414, 31416, 31413, 31409, 31415, 31710, 31715, 31719, 31709, 31701, 31717, 31706, 31720, 31737, 31700, 31722, 31714, 31708, 31723, 31704, 31711, 31954, 31956, 31959, 31952, 31953, 32274, 32289, 32279, 32268, 32287, 32288, 32275, 32270, 32284, 32277, 32282, 32290, 32267, 32271, 32278, 32269, 32276, 32293, 32292, 32579, 32635, 32636, 32634, 32689, 32751, 32810, 32809, 32876, 33201, 33190, 33198, 33209, 33205, 33195, 33200, 33196, 33204, 33202, 33207, 33191, 33266, 33365, 33366, 33367, 34134, 34117, 34155, 34125, 34131, 34145, 34136, 34112, 34118, 34148, 34113, 34146, 34116, 34129, 34119, 34147, 34110, 34139, 34161, 34126, 34158, 34165, 34133, 34151, 34144, 34188, 34150, 34141, 34132, 34149, 34156, 34403, 34405, 34404, 34715, 34703, 34711, 34707, 34706, 34696, 34689, 34710, 34712, 34681, 34695, 34723, 34693, 34704, 34705, 34717, 34692, 34708, 34716, 34714, 34697, 35102, 35110, 35120, 35117, 35118, 35111, 35121, 35106, 35113, 35107, 35119, 35116, 35103, 35313, 35552, 35554, 35570, 35572, 35573, 35549, 35604, 35556, 35551, 35568, 35528, 35550, 35553, 35560, 35583, 35567, 35579, 35985, 35986, 35984, 36085, 36078, 36081, 36080, 36083, 36204, 36206, 36261, 36263, 36403, 36414, 36408, 36416, 36421, 36406, 36412, 36413, 36417, 36400, 36415, 36541, 36662, 36654, 36661, 36658, 36665, 36663, 36660, 36982, 36985, 36987, 36998, 37114, 37171, 37173, 37174, 37267, 37264, 37265, 37261, 37263, 37671, 37662, 37640, 37663, 37638, 37647, 37754, 37688, 37692, 37659, 37667, 37650, 37633, 37702, 37677, 37646, 37645, 37579, 37661, 37626, 37669, 37651, 37625, 37623, 37684, 37634, 37668, 37631, 37673, 37689, 37685, 37674, 37652, 37644, 37643, 37630, 37641, 37632, 37627, 37654, 38332, 38349, 38334, 38329, 38330, 38326, 38335, 38325, 38333, 38569, 38612, 38667, 38674, 38672, 38809, 38807, 38804, 38896, 38904, 38965, 38959, 38962, 39204, 39199, 39207, 39209, 39326, 39406, 39404, 39397, 39396, 39408, 39395, 39402, 39401, 39399, 39609, 39615, 39604, 39611, 39670, 39674, 39673, 39671, 39731, 39808, 39813, 39815, 39804, 39806, 39803, 39810, 39827, 39826, 39824, 39802, 39829, 39805, 39816, 40229, 40215, 40224, 40222, 40212, 40233, 40221, 40216, 40226, 40208, 40217, 40223, 40584, 40582, 40583, 40622, 40621, 40661, 40662, 40698, 40722, 40765, 20774, 20773, 20770, 20772, 20768, 20777, 21236, 22163, 22156, 22157, 22150, 22148, 22147, 22142, 22146, 22143, 22145, 22742, 22740, 22735, 22738, 23341, 23333, 23346, 23331, 23340, 23335, 23334, 23343, 23342, 23419, 23537, 23538, 23991, 24172, 24170, 24510, 24507, 25027, 25013, 25020, 25063, 25056, 25061, 25060, 25064, 25054, 25839, 25833, 25827, 25835, 25828, 25832, 25985, 25984, 26038, 26074, 26322, 27277, 27286, 27265, 27301, 27273, 27295, 27291, 27297, 27294, 27271, 27283, 27278, 27285, 27267, 27304, 27300, 27281, 27263, 27302, 27290, 27269, 27276, 27282, 27483, 27565, 27657, 28620, 28585, 28660, 28628, 28643, 28636, 28653, 28647, 28646, 28638, 28658, 28637, 28642, 28648, 29153, 29169, 29160, 29170, 29156, 29168, 29154, 29555, 29550, 29551, 29847, 29874, 29867, 29840, 29866, 29869, 29873, 29861, 29871, 29968, 29969, 29970, 29967, 30084, 30275, 30280, 30281, 30279, 30372, 30441, 30645, 30635, 30642, 30647, 30646, 30644, 30641, 30632, 30704, 30963, 30973, 30978, 30971, 30972, 30962, 30981, 30969, 30974, 30980, 31147, 31144, 31324, 31323, 31318, 31320, 31316, 31322, 31422, 31424, 31425, 31749, 31759, 31730, 31744, 31743, 31739, 31758, 31732, 31755, 31731, 31746, 31753, 31747, 31745, 31736, 31741, 31750, 31728, 31729, 31760, 31754, 31976, 32301, 32316, 32322, 32307, 38984, 32312, 32298, 32329, 32320, 32327, 32297, 32332, 32304, 32315, 32310, 32324, 32314, 32581, 32639, 32638, 32637, 32756, 32754, 32812, 33211, 33220, 33228, 33226, 33221, 33223, 33212, 33257, 33371, 33370, 33372, 34179, 34176, 34191, 34215, 34197, 34208, 34187, 34211, 34171, 34212, 34202, 34206, 34167, 34172, 34185, 34209, 34170, 34168, 34135, 34190, 34198, 34182, 34189, 34201, 34205, 34177, 34210, 34178, 34184, 34181, 34169, 34166, 34200, 34192, 34207, 34408, 34750, 34730, 34733, 34757, 34736, 34732, 34745, 34741, 34748, 34734, 34761, 34755, 34754, 34764, 34743, 34735, 34756, 34762, 34740, 34742, 34751, 34744, 34749, 34782, 34738, 35125, 35123, 35132, 35134, 35137, 35154, 35127, 35138, 35245, 35247, 35246, 35314, 35315, 35614, 35608, 35606, 35601, 35589, 35595, 35618, 35599, 35602, 35605, 35591, 35597, 35592, 35590, 35612, 35603, 35610, 35919, 35952, 35954, 35953, 35951, 35989, 35988, 36089, 36207, 36430, 36429, 36435, 36432, 36428, 36423, 36675, 36672, 36997, 36990, 37176, 37274, 37282, 37275, 37273, 37279, 37281, 37277, 37280, 37793, 37763, 37807, 37732, 37718, 37703, 37756, 37720, 37724, 37750, 37705, 37712, 37713, 37728, 37741, 37775, 37708, 37738, 37753, 37719, 37717, 37714, 37711, 37745, 37751, 37755, 37729, 37726, 37731, 37735, 37760, 37710, 37721, 38343, 38336, 38345, 38339, 38341, 38327, 38574, 38576, 38572, 38688, 38687, 38680, 38685, 38681, 38810, 38817, 38812, 38814, 38813, 38869, 38868, 38897, 38977, 38980, 38986, 38985, 38981, 38979, 39205, 39211, 39212, 39210, 39219, 39218, 39215, 39213, 39217, 39216, 39320, 39331, 39329, 39426, 39418, 39412, 39415, 39417, 39416, 39414, 39419, 39421, 39422, 39420, 39427, 39614, 39678, 39677, 39681, 39676, 39752, 39834, 39848, 39838, 39835, 39846, 39841, 39845, 39844, 39814, 39842, 39840, 39855, 40243, 40257, 40295, 40246, 40238, 40239, 40241, 40248, 40240, 40261, 40258, 40259, 40254, 40247, 40256, 40253, 32757, 40237, 40586, 40585, 40589, 40624, 40648, 40666, 40699, 40703, 40740, 40739, 40738, 40788, 40864, 20785, 20781, 20782, 22168, 22172, 22167, 22170, 22173, 22169, 22896, 23356, 23657, 23658, 24e3, 24173, 24174, 25048, 25055, 25069, 25070, 25073, 25066, 25072, 25067, 25046, 25065, 25855, 25860, 25853, 25848, 25857, 25859, 25852, 26004, 26075, 26330, 26331, 26328, 27333, 27321, 27325, 27361, 27334, 27322, 27318, 27319, 27335, 27316, 27309, 27486, 27593, 27659, 28679, 28684, 28685, 28673, 28677, 28692, 28686, 28671, 28672, 28667, 28710, 28668, 28663, 28682, 29185, 29183, 29177, 29187, 29181, 29558, 29880, 29888, 29877, 29889, 29886, 29878, 29883, 29890, 29972, 29971, 30300, 30308, 30297, 30288, 30291, 30295, 30298, 30374, 30397, 30444, 30658, 30650, 30975, 30988, 30995, 30996, 30985, 30992, 30994, 30993, 31149, 31148, 31327, 31772, 31785, 31769, 31776, 31775, 31789, 31773, 31782, 31784, 31778, 31781, 31792, 32348, 32336, 32342, 32355, 32344, 32354, 32351, 32337, 32352, 32343, 32339, 32693, 32691, 32759, 32760, 32885, 33233, 33234, 33232, 33375, 33374, 34228, 34246, 34240, 34243, 34242, 34227, 34229, 34237, 34247, 34244, 34239, 34251, 34254, 34248, 34245, 34225, 34230, 34258, 34340, 34232, 34231, 34238, 34409, 34791, 34790, 34786, 34779, 34795, 34794, 34789, 34783, 34803, 34788, 34772, 34780, 34771, 34797, 34776, 34787, 34724, 34775, 34777, 34817, 34804, 34792, 34781, 35155, 35147, 35151, 35148, 35142, 35152, 35153, 35145, 35626, 35623, 35619, 35635, 35632, 35637, 35655, 35631, 35644, 35646, 35633, 35621, 35639, 35622, 35638, 35630, 35620, 35643, 35645, 35642, 35906, 35957, 35993, 35992, 35991, 36094, 36100, 36098, 36096, 36444, 36450, 36448, 36439, 36438, 36446, 36453, 36455, 36443, 36442, 36449, 36445, 36457, 36436, 36678, 36679, 36680, 36683, 37160, 37178, 37179, 37182, 37288, 37285, 37287, 37295, 37290, 37813, 37772, 37778, 37815, 37787, 37789, 37769, 37799, 37774, 37802, 37790, 37798, 37781, 37768, 37785, 37791, 37773, 37809, 37777, 37810, 37796, 37800, 37812, 37795, 37797, 38354, 38355, 38353, 38579, 38615, 38618, 24002, 38623, 38616, 38621, 38691, 38690, 38693, 38828, 38830, 38824, 38827, 38820, 38826, 38818, 38821, 38871, 38873, 38870, 38872, 38906, 38992, 38993, 38994, 39096, 39233, 39228, 39226, 39439, 39435, 39433, 39437, 39428, 39441, 39434, 39429, 39431, 39430, 39616, 39644, 39688, 39684, 39685, 39721, 39733, 39754, 39756, 39755, 39879, 39878, 39875, 39871, 39873, 39861, 39864, 39891, 39862, 39876, 39865, 39869, 40284, 40275, 40271, 40266, 40283, 40267, 40281, 40278, 40268, 40279, 40274, 40276, 40287, 40280, 40282, 40590, 40588, 40671, 40705, 40704, 40726, 40741, 40747, 40746, 40745, 40744, 40780, 40789, 20788, 20789, 21142, 21239, 21428, 22187, 22189, 22182, 22183, 22186, 22188, 22746, 22749, 22747, 22802, 23357, 23358, 23359, 24003, 24176, 24511, 25083, 25863, 25872, 25869, 25865, 25868, 25870, 25988, 26078, 26077, 26334, 27367, 27360, 27340, 27345, 27353, 27339, 27359, 27356, 27344, 27371, 27343, 27341, 27358, 27488, 27568, 27660, 28697, 28711, 28704, 28694, 28715, 28705, 28706, 28707, 28713, 28695, 28708, 28700, 28714, 29196, 29194, 29191, 29186, 29189, 29349, 29350, 29348, 29347, 29345, 29899, 29893, 29879, 29891, 29974, 30304, 30665, 30666, 30660, 30705, 31005, 31003, 31009, 31004, 30999, 31006, 31152, 31335, 31336, 31795, 31804, 31801, 31788, 31803, 31980, 31978, 32374, 32373, 32376, 32368, 32375, 32367, 32378, 32370, 32372, 32360, 32587, 32586, 32643, 32646, 32695, 32765, 32766, 32888, 33239, 33237, 33380, 33377, 33379, 34283, 34289, 34285, 34265, 34273, 34280, 34266, 34263, 34284, 34290, 34296, 34264, 34271, 34275, 34268, 34257, 34288, 34278, 34287, 34270, 34274, 34816, 34810, 34819, 34806, 34807, 34825, 34828, 34827, 34822, 34812, 34824, 34815, 34826, 34818, 35170, 35162, 35163, 35159, 35169, 35164, 35160, 35165, 35161, 35208, 35255, 35254, 35318, 35664, 35656, 35658, 35648, 35667, 35670, 35668, 35659, 35669, 35665, 35650, 35666, 35671, 35907, 35959, 35958, 35994, 36102, 36103, 36105, 36268, 36266, 36269, 36267, 36461, 36472, 36467, 36458, 36463, 36475, 36546, 36690, 36689, 36687, 36688, 36691, 36788, 37184, 37183, 37296, 37293, 37854, 37831, 37839, 37826, 37850, 37840, 37881, 37868, 37836, 37849, 37801, 37862, 37834, 37844, 37870, 37859, 37845, 37828, 37838, 37824, 37842, 37863, 38269, 38362, 38363, 38625, 38697, 38699, 38700, 38696, 38694, 38835, 38839, 38838, 38877, 38878, 38879, 39004, 39001, 39005, 38999, 39103, 39101, 39099, 39102, 39240, 39239, 39235, 39334, 39335, 39450, 39445, 39461, 39453, 39460, 39451, 39458, 39456, 39463, 39459, 39454, 39452, 39444, 39618, 39691, 39690, 39694, 39692, 39735, 39914, 39915, 39904, 39902, 39908, 39910, 39906, 39920, 39892, 39895, 39916, 39900, 39897, 39909, 39893, 39905, 39898, 40311, 40321, 40330, 40324, 40328, 40305, 40320, 40312, 40326, 40331, 40332, 40317, 40299, 40308, 40309, 40304, 40297, 40325, 40307, 40315, 40322, 40303, 40313, 40319, 40327, 40296, 40596, 40593, 40640, 40700, 40749, 40768, 40769, 40781, 40790, 40791, 40792, 21303, 22194, 22197, 22195, 22755, 23365, 24006, 24007, 24302, 24303, 24512, 24513, 25081, 25879, 25878, 25877, 25875, 26079, 26344, 26339, 26340, 27379, 27376, 27370, 27368, 27385, 27377, 27374, 27375, 28732, 28725, 28719, 28727, 28724, 28721, 28738, 28728, 28735, 28730, 28729, 28736, 28731, 28723, 28737, 29203, 29204, 29352, 29565, 29564, 29882, 30379, 30378, 30398, 30445, 30668, 30670, 30671, 30669, 30706, 31013, 31011, 31015, 31016, 31012, 31017, 31154, 31342, 31340, 31341, 31479, 31817, 31816, 31818, 31815, 31813, 31982, 32379, 32382, 32385, 32384, 32698, 32767, 32889, 33243, 33241, 33291, 33384, 33385, 34338, 34303, 34305, 34302, 34331, 34304, 34294, 34308, 34313, 34309, 34316, 34301, 34841, 34832, 34833, 34839, 34835, 34838, 35171, 35174, 35257, 35319, 35680, 35690, 35677, 35688, 35683, 35685, 35687, 35693, 36270, 36486, 36488, 36484, 36697, 36694, 36695, 36693, 36696, 36698, 37005, 37187, 37185, 37303, 37301, 37298, 37299, 37899, 37907, 37883, 37920, 37903, 37908, 37886, 37909, 37904, 37928, 37913, 37901, 37877, 37888, 37879, 37895, 37902, 37910, 37906, 37882, 37897, 37880, 37898, 37887, 37884, 37900, 37878, 37905, 37894, 38366, 38368, 38367, 38702, 38703, 38841, 38843, 38909, 38910, 39008, 39010, 39011, 39007, 39105, 39106, 39248, 39246, 39257, 39244, 39243, 39251, 39474, 39476, 39473, 39468, 39466, 39478, 39465, 39470, 39480, 39469, 39623, 39626, 39622, 39696, 39698, 39697, 39947, 39944, 39927, 39941, 39954, 39928, 4e4, 39943, 39950, 39942, 39959, 39956, 39945, 40351, 40345, 40356, 40349, 40338, 40344, 40336, 40347, 40352, 40340, 40348, 40362, 40343, 40353, 40346, 40354, 40360, 40350, 40355, 40383, 40361, 40342, 40358, 40359, 40601, 40603, 40602, 40677, 40676, 40679, 40678, 40752, 40750, 40795, 40800, 40798, 40797, 40793, 40849, 20794, 20793, 21144, 21143, 22211, 22205, 22206, 23368, 23367, 24011, 24015, 24305, 25085, 25883, 27394, 27388, 27395, 27384, 27392, 28739, 28740, 28746, 28744, 28745, 28741, 28742, 29213, 29210, 29209, 29566, 29975, 30314, 30672, 31021, 31025, 31023, 31828, 31827, 31986, 32394, 32391, 32392, 32395, 32390, 32397, 32589, 32699, 32816, 33245, 34328, 34346, 34342, 34335, 34339, 34332, 34329, 34343, 34350, 34337, 34336, 34345, 34334, 34341, 34857, 34845, 34843, 34848, 34852, 34844, 34859, 34890, 35181, 35177, 35182, 35179, 35322, 35705, 35704, 35653, 35706, 35707, 36112, 36116, 36271, 36494, 36492, 36702, 36699, 36701, 37190, 37188, 37189, 37305, 37951, 37947, 37942, 37929, 37949, 37948, 37936, 37945, 37930, 37943, 37932, 37952, 37937, 38373, 38372, 38371, 38709, 38714, 38847, 38881, 39012, 39113, 39110, 39104, 39256, 39254, 39481, 39485, 39494, 39492, 39490, 39489, 39482, 39487, 39629, 39701, 39703, 39704, 39702, 39738, 39762, 39979, 39965, 39964, 39980, 39971, 39976, 39977, 39972, 39969, 40375, 40374, 40380, 40385, 40391, 40394, 40399, 40382, 40389, 40387, 40379, 40373, 40398, 40377, 40378, 40364, 40392, 40369, 40365, 40396, 40371, 40397, 40370, 40570, 40604, 40683, 40686, 40685, 40731, 40728, 40730, 40753, 40782, 40805, 40804, 40850, 20153, 22214, 22213, 22219, 22897, 23371, 23372, 24021, 24017, 24306, 25889, 25888, 25894, 25890, 27403, 27400, 27401, 27661, 28757, 28758, 28759, 28754, 29214, 29215, 29353, 29567, 29912, 29909, 29913, 29911, 30317, 30381, 31029, 31156, 31344, 31345, 31831, 31836, 31833, 31835, 31834, 31988, 31985, 32401, 32591, 32647, 33246, 33387, 34356, 34357, 34355, 34348, 34354, 34358, 34860, 34856, 34854, 34858, 34853, 35185, 35263, 35262, 35323, 35710, 35716, 35714, 35718, 35717, 35711, 36117, 36501, 36500, 36506, 36498, 36496, 36502, 36503, 36704, 36706, 37191, 37964, 37968, 37962, 37963, 37967, 37959, 37957, 37960, 37961, 37958, 38719, 38883, 39018, 39017, 39115, 39252, 39259, 39502, 39507, 39508, 39500, 39503, 39496, 39498, 39497, 39506, 39504, 39632, 39705, 39723, 39739, 39766, 39765, 40006, 40008, 39999, 40004, 39993, 39987, 40001, 39996, 39991, 39988, 39986, 39997, 39990, 40411, 40402, 40414, 40410, 40395, 40400, 40412, 40401, 40415, 40425, 40409, 40408, 40406, 40437, 40405, 40413, 40630, 40688, 40757, 40755, 40754, 40770, 40811, 40853, 40866, 20797, 21145, 22760, 22759, 22898, 23373, 24024, 34863, 24399, 25089, 25091, 25092, 25897, 25893, 26006, 26347, 27409, 27410, 27407, 27594, 28763, 28762, 29218, 29570, 29569, 29571, 30320, 30676, 31847, 31846, 32405, 33388, 34362, 34368, 34361, 34364, 34353, 34363, 34366, 34864, 34866, 34862, 34867, 35190, 35188, 35187, 35326, 35724, 35726, 35723, 35720, 35909, 36121, 36504, 36708, 36707, 37308, 37986, 37973, 37981, 37975, 37982, 38852, 38853, 38912, 39510, 39513, 39710, 39711, 39712, 40018, 40024, 40016, 40010, 40013, 40011, 40021, 40025, 40012, 40014, 40443, 40439, 40431, 40419, 40427, 40440, 40420, 40438, 40417, 40430, 40422, 40434, 40432, 40418, 40428, 40436, 40435, 40424, 40429, 40642, 40656, 40690, 40691, 40710, 40732, 40760, 40759, 40758, 40771, 40783, 40817, 40816, 40814, 40815, 22227, 22221, 23374, 23661, 25901, 26349, 26350, 27411, 28767, 28769, 28765, 28768, 29219, 29915, 29925, 30677, 31032, 31159, 31158, 31850, 32407, 32649, 33389, 34371, 34872, 34871, 34869, 34891, 35732, 35733, 36510, 36511, 36512, 36509, 37310, 37309, 37314, 37995, 37992, 37993, 38629, 38726, 38723, 38727, 38855, 38885, 39518, 39637, 39769, 40035, 40039, 40038, 40034, 40030, 40032, 40450, 40446, 40455, 40451, 40454, 40453, 40448, 40449, 40457, 40447, 40445, 40452, 40608, 40734, 40774, 40820, 40821, 40822, 22228, 25902, 26040, 27416, 27417, 27415, 27418, 28770, 29222, 29354, 30680, 30681, 31033, 31849, 31851, 31990, 32410, 32408, 32411, 32409, 33248, 33249, 34374, 34375, 34376, 35193, 35194, 35196, 35195, 35327, 35736, 35737, 36517, 36516, 36515, 37998, 37997, 37999, 38001, 38003, 38729, 39026, 39263, 40040, 40046, 40045, 40459, 40461, 40464, 40463, 40466, 40465, 40609, 40693, 40713, 40775, 40824, 40827, 40826, 40825, 22302, 28774, 31855, 34876, 36274, 36518, 37315, 38004, 38008, 38006, 38005, 39520, 40052, 40051, 40049, 40053, 40468, 40467, 40694, 40714, 40868, 28776, 28773, 31991, 34410, 34878, 34877, 34879, 35742, 35996, 36521, 36553, 38731, 39027, 39028, 39116, 39265, 39339, 39524, 39526, 39527, 39716, 40469, 40471, 40776, 25095, 27422, 29223, 34380, 36520, 38018, 38016, 38017, 39529, 39528, 39726, 40473, 29225, 34379, 35743, 38019, 40057, 40631, 30325, 39531, 40058, 40477, 28777, 28778, 40612, 40830, 40777, 40856, 30849, 37561, 35023, 22715, 24658, 31911, 23290, 9556, 9574, 9559, 9568, 9580, 9571, 9562, 9577, 9565, 9554, 9572, 9557, 9566, 9578, 9569, 9560, 9575, 9563, 9555, 9573, 9558, 9567, 9579, 9570, 9561, 9576, 9564, 9553, 9552, 9581, 9582, 9584, 9583, 65517, 132423, 37595, 132575, 147397, 34124, 17077, 29679, 20917, 13897, 149826, 166372, 37700, 137691, 33518, 146632, 30780, 26436, 25311, 149811, 166314, 131744, 158643, 135941, 20395, 140525, 20488, 159017, 162436, 144896, 150193, 140563, 20521, 131966, 24484, 131968, 131911, 28379, 132127, 20605, 20737, 13434, 20750, 39020, 14147, 33814, 149924, 132231, 20832, 144308, 20842, 134143, 139516, 131813, 140592, 132494, 143923, 137603, 23426, 34685, 132531, 146585, 20914, 20920, 40244, 20937, 20943, 20945, 15580, 20947, 150182, 20915, 20962, 21314, 20973, 33741, 26942, 145197, 24443, 21003, 21030, 21052, 21173, 21079, 21140, 21177, 21189, 31765, 34114, 21216, 34317, 158483, 21253, 166622, 21833, 28377, 147328, 133460, 147436, 21299, 21316, 134114, 27851, 136998, 26651, 29653, 24650, 16042, 14540, 136936, 29149, 17570, 21357, 21364, 165547, 21374, 21375, 136598, 136723, 30694, 21395, 166555, 21408, 21419, 21422, 29607, 153458, 16217, 29596, 21441, 21445, 27721, 20041, 22526, 21465, 15019, 134031, 21472, 147435, 142755, 21494, 134263, 21523, 28793, 21803, 26199, 27995, 21613, 158547, 134516, 21853, 21647, 21668, 18342, 136973, 134877, 15796, 134477, 166332, 140952, 21831, 19693, 21551, 29719, 21894, 21929, 22021, 137431, 147514, 17746, 148533, 26291, 135348, 22071, 26317, 144010, 26276, 26285, 22093, 22095, 30961, 22257, 38791, 21502, 22272, 22255, 22253, 166758, 13859, 135759, 22342, 147877, 27758, 28811, 22338, 14001, 158846, 22502, 136214, 22531, 136276, 148323, 22566, 150517, 22620, 22698, 13665, 22752, 22748, 135740, 22779, 23551, 22339, 172368, 148088, 37843, 13729, 22815, 26790, 14019, 28249, 136766, 23076, 21843, 136850, 34053, 22985, 134478, 158849, 159018, 137180, 23001, 137211, 137138, 159142, 28017, 137256, 136917, 23033, 159301, 23211, 23139, 14054, 149929, 23159, 14088, 23190, 29797, 23251, 159649, 140628, 15749, 137489, 14130, 136888, 24195, 21200, 23414, 25992, 23420, 162318, 16388, 18525, 131588, 23509, 24928, 137780, 154060, 132517, 23539, 23453, 19728, 23557, 138052, 23571, 29646, 23572, 138405, 158504, 23625, 18653, 23685, 23785, 23791, 23947, 138745, 138807, 23824, 23832, 23878, 138916, 23738, 24023, 33532, 14381, 149761, 139337, 139635, 33415, 14390, 15298, 24110, 27274, 24181, 24186, 148668, 134355, 21414, 20151, 24272, 21416, 137073, 24073, 24308, 164994, 24313, 24315, 14496, 24316, 26686, 37915, 24333, 131521, 194708, 15070, 18606, 135994, 24378, 157832, 140240, 24408, 140401, 24419, 38845, 159342, 24434, 37696, 166454, 24487, 23990, 15711, 152144, 139114, 159992, 140904, 37334, 131742, 166441, 24625, 26245, 137335, 14691, 15815, 13881, 22416, 141236, 31089, 15936, 24734, 24740, 24755, 149890, 149903, 162387, 29860, 20705, 23200, 24932, 33828, 24898, 194726, 159442, 24961, 20980, 132694, 24967, 23466, 147383, 141407, 25043, 166813, 170333, 25040, 14642, 141696, 141505, 24611, 24924, 25886, 25483, 131352, 25285, 137072, 25301, 142861, 25452, 149983, 14871, 25656, 25592, 136078, 137212, 25744, 28554, 142902, 38932, 147596, 153373, 25825, 25829, 38011, 14950, 25658, 14935, 25933, 28438, 150056, 150051, 25989, 25965, 25951, 143486, 26037, 149824, 19255, 26065, 16600, 137257, 26080, 26083, 24543, 144384, 26136, 143863, 143864, 26180, 143780, 143781, 26187, 134773, 26215, 152038, 26227, 26228, 138813, 143921, 165364, 143816, 152339, 30661, 141559, 39332, 26370, 148380, 150049, 15147, 27130, 145346, 26462, 26471, 26466, 147917, 168173, 26583, 17641, 26658, 28240, 37436, 26625, 144358, 159136, 26717, 144495, 27105, 27147, 166623, 26995, 26819, 144845, 26881, 26880, 15666, 14849, 144956, 15232, 26540, 26977, 166474, 17148, 26934, 27032, 15265, 132041, 33635, 20624, 27129, 144985, 139562, 27205, 145155, 27293, 15347, 26545, 27336, 168348, 15373, 27421, 133411, 24798, 27445, 27508, 141261, 28341, 146139, 132021, 137560, 14144, 21537, 146266, 27617, 147196, 27612, 27703, 140427, 149745, 158545, 27738, 33318, 27769, 146876, 17605, 146877, 147876, 149772, 149760, 146633, 14053, 15595, 134450, 39811, 143865, 140433, 32655, 26679, 159013, 159137, 159211, 28054, 27996, 28284, 28420, 149887, 147589, 159346, 34099, 159604, 20935, 27804, 28189, 33838, 166689, 28207, 146991, 29779, 147330, 31180, 28239, 23185, 143435, 28664, 14093, 28573, 146992, 28410, 136343, 147517, 17749, 37872, 28484, 28508, 15694, 28532, 168304, 15675, 28575, 147780, 28627, 147601, 147797, 147513, 147440, 147380, 147775, 20959, 147798, 147799, 147776, 156125, 28747, 28798, 28839, 28801, 28876, 28885, 28886, 28895, 16644, 15848, 29108, 29078, 148087, 28971, 28997, 23176, 29002, 29038, 23708, 148325, 29007, 37730, 148161, 28972, 148570, 150055, 150050, 29114, 166888, 28861, 29198, 37954, 29205, 22801, 37955, 29220, 37697, 153093, 29230, 29248, 149876, 26813, 29269, 29271, 15957, 143428, 26637, 28477, 29314, 29482, 29483, 149539, 165931, 18669, 165892, 29480, 29486, 29647, 29610, 134202, 158254, 29641, 29769, 147938, 136935, 150052, 26147, 14021, 149943, 149901, 150011, 29687, 29717, 26883, 150054, 29753, 132547, 16087, 29788, 141485, 29792, 167602, 29767, 29668, 29814, 33721, 29804, 14128, 29812, 37873, 27180, 29826, 18771, 150156, 147807, 150137, 166799, 23366, 166915, 137374, 29896, 137608, 29966, 29929, 29982, 167641, 137803, 23511, 167596, 37765, 30029, 30026, 30055, 30062, 151426, 16132, 150803, 30094, 29789, 30110, 30132, 30210, 30252, 30289, 30287, 30319, 30326, 156661, 30352, 33263, 14328, 157969, 157966, 30369, 30373, 30391, 30412, 159647, 33890, 151709, 151933, 138780, 30494, 30502, 30528, 25775, 152096, 30552, 144044, 30639, 166244, 166248, 136897, 30708, 30729, 136054, 150034, 26826, 30895, 30919, 30931, 38565, 31022, 153056, 30935, 31028, 30897, 161292, 36792, 34948, 166699, 155779, 140828, 31110, 35072, 26882, 31104, 153687, 31133, 162617, 31036, 31145, 28202, 160038, 16040, 31174, 168205, 31188],
"euc-kr": [44034, 44035, 44037, 44038, 44043, 44044, 44045, 44046, 44047, 44056, 44062, 44063, 44065, 44066, 44067, 44069, 44070, 44071, 44072, 44073, 44074, 44075, 44078, 44082, 44083, 44084, null, null, null, null, null, null, 44085, 44086, 44087, 44090, 44091, 44093, 44094, 44095, 44097, 44098, 44099, 44100, 44101, 44102, 44103, 44104, 44105, 44106, 44108, 44110, 44111, 44112, 44113, 44114, 44115, 44117, null, null, null, null, null, null, 44118, 44119, 44121, 44122, 44123, 44125, 44126, 44127, 44128, 44129, 44130, 44131, 44132, 44133, 44134, 44135, 44136, 44137, 44138, 44139, 44140, 44141, 44142, 44143, 44146, 44147, 44149, 44150, 44153, 44155, 44156, 44157, 44158, 44159, 44162, 44167, 44168, 44173, 44174, 44175, 44177, 44178, 44179, 44181, 44182, 44183, 44184, 44185, 44186, 44187, 44190, 44194, 44195, 44196, 44197, 44198, 44199, 44203, 44205, 44206, 44209, 44210, 44211, 44212, 44213, 44214, 44215, 44218, 44222, 44223, 44224, 44226, 44227, 44229, 44230, 44231, 44233, 44234, 44235, 44237, 44238, 44239, 44240, 44241, 44242, 44243, 44244, 44246, 44248, 44249, 44250, 44251, 44252, 44253, 44254, 44255, 44258, 44259, 44261, 44262, 44265, 44267, 44269, 44270, 44274, 44276, 44279, 44280, 44281, 44282, 44283, 44286, 44287, 44289, 44290, 44291, 44293, 44295, 44296, 44297, 44298, 44299, 44302, 44304, 44306, 44307, 44308, 44309, 44310, 44311, 44313, 44314, 44315, 44317, 44318, 44319, 44321, 44322, 44323, 44324, 44325, 44326, 44327, 44328, 44330, 44331, 44334, 44335, 44336, 44337, 44338, 44339, null, null, null, null, null, null, 44342, 44343, 44345, 44346, 44347, 44349, 44350, 44351, 44352, 44353, 44354, 44355, 44358, 44360, 44362, 44363, 44364, 44365, 44366, 44367, 44369, 44370, 44371, 44373, 44374, 44375, null, null, null, null, null, null, 44377, 44378, 44379, 44380, 44381, 44382, 44383, 44384, 44386, 44388, 44389, 44390, 44391, 44392, 44393, 44394, 44395, 44398, 44399, 44401, 44402, 44407, 44408, 44409, 44410, 44414, 44416, 44419, 44420, 44421, 44422, 44423, 44426, 44427, 44429, 44430, 44431, 44433, 44434, 44435, 44436, 44437, 44438, 44439, 44440, 44441, 44442, 44443, 44446, 44447, 44448, 44449, 44450, 44451, 44453, 44454, 44455, 44456, 44457, 44458, 44459, 44460, 44461, 44462, 44463, 44464, 44465, 44466, 44467, 44468, 44469, 44470, 44472, 44473, 44474, 44475, 44476, 44477, 44478, 44479, 44482, 44483, 44485, 44486, 44487, 44489, 44490, 44491, 44492, 44493, 44494, 44495, 44498, 44500, 44501, 44502, 44503, 44504, 44505, 44506, 44507, 44509, 44510, 44511, 44513, 44514, 44515, 44517, 44518, 44519, 44520, 44521, 44522, 44523, 44524, 44525, 44526, 44527, 44528, 44529, 44530, 44531, 44532, 44533, 44534, 44535, 44538, 44539, 44541, 44542, 44546, 44547, 44548, 44549, 44550, 44551, 44554, 44556, 44558, 44559, 44560, 44561, 44562, 44563, 44565, 44566, 44567, 44568, 44569, 44570, 44571, 44572, null, null, null, null, null, null, 44573, 44574, 44575, 44576, 44577, 44578, 44579, 44580, 44581, 44582, 44583, 44584, 44585, 44586, 44587, 44588, 44589, 44590, 44591, 44594, 44595, 44597, 44598, 44601, 44603, 44604, null, null, null, null, null, null, 44605, 44606, 44607, 44610, 44612, 44615, 44616, 44617, 44619, 44623, 44625, 44626, 44627, 44629, 44631, 44632, 44633, 44634, 44635, 44638, 44642, 44643, 44644, 44646, 44647, 44650, 44651, 44653, 44654, 44655, 44657, 44658, 44659, 44660, 44661, 44662, 44663, 44666, 44670, 44671, 44672, 44673, 44674, 44675, 44678, 44679, 44680, 44681, 44682, 44683, 44685, 44686, 44687, 44688, 44689, 44690, 44691, 44692, 44693, 44694, 44695, 44696, 44697, 44698, 44699, 44700, 44701, 44702, 44703, 44704, 44705, 44706, 44707, 44708, 44709, 44710, 44711, 44712, 44713, 44714, 44715, 44716, 44717, 44718, 44719, 44720, 44721, 44722, 44723, 44724, 44725, 44726, 44727, 44728, 44729, 44730, 44731, 44735, 44737, 44738, 44739, 44741, 44742, 44743, 44744, 44745, 44746, 44747, 44750, 44754, 44755, 44756, 44757, 44758, 44759, 44762, 44763, 44765, 44766, 44767, 44768, 44769, 44770, 44771, 44772, 44773, 44774, 44775, 44777, 44778, 44780, 44782, 44783, 44784, 44785, 44786, 44787, 44789, 44790, 44791, 44793, 44794, 44795, 44797, 44798, 44799, 44800, 44801, 44802, 44803, 44804, 44805, null, null, null, null, null, null, 44806, 44809, 44810, 44811, 44812, 44814, 44815, 44817, 44818, 44819, 44820, 44821, 44822, 44823, 44824, 44825, 44826, 44827, 44828, 44829, 44830, 44831, 44832, 44833, 44834, 44835, null, null, null, null, null, null, 44836, 44837, 44838, 44839, 44840, 44841, 44842, 44843, 44846, 44847, 44849, 44851, 44853, 44854, 44855, 44856, 44857, 44858, 44859, 44862, 44864, 44868, 44869, 44870, 44871, 44874, 44875, 44876, 44877, 44878, 44879, 44881, 44882, 44883, 44884, 44885, 44886, 44887, 44888, 44889, 44890, 44891, 44894, 44895, 44896, 44897, 44898, 44899, 44902, 44903, 44904, 44905, 44906, 44907, 44908, 44909, 44910, 44911, 44912, 44913, 44914, 44915, 44916, 44917, 44918, 44919, 44920, 44922, 44923, 44924, 44925, 44926, 44927, 44929, 44930, 44931, 44933, 44934, 44935, 44937, 44938, 44939, 44940, 44941, 44942, 44943, 44946, 44947, 44948, 44950, 44951, 44952, 44953, 44954, 44955, 44957, 44958, 44959, 44960, 44961, 44962, 44963, 44964, 44965, 44966, 44967, 44968, 44969, 44970, 44971, 44972, 44973, 44974, 44975, 44976, 44977, 44978, 44979, 44980, 44981, 44982, 44983, 44986, 44987, 44989, 44990, 44991, 44993, 44994, 44995, 44996, 44997, 44998, 45002, 45004, 45007, 45008, 45009, 45010, 45011, 45013, 45014, 45015, 45016, 45017, 45018, 45019, 45021, 45022, 45023, 45024, 45025, null, null, null, null, null, null, 45026, 45027, 45028, 45029, 45030, 45031, 45034, 45035, 45036, 45037, 45038, 45039, 45042, 45043, 45045, 45046, 45047, 45049, 45050, 45051, 45052, 45053, 45054, 45055, 45058, 45059, null, null, null, null, null, null, 45061, 45062, 45063, 45064, 45065, 45066, 45067, 45069, 45070, 45071, 45073, 45074, 45075, 45077, 45078, 45079, 45080, 45081, 45082, 45083, 45086, 45087, 45088, 45089, 45090, 45091, 45092, 45093, 45094, 45095, 45097, 45098, 45099, 45100, 45101, 45102, 45103, 45104, 45105, 45106, 45107, 45108, 45109, 45110, 45111, 45112, 45113, 45114, 45115, 45116, 45117, 45118, 45119, 45120, 45121, 45122, 45123, 45126, 45127, 45129, 45131, 45133, 45135, 45136, 45137, 45138, 45142, 45144, 45146, 45147, 45148, 45150, 45151, 45152, 45153, 45154, 45155, 45156, 45157, 45158, 45159, 45160, 45161, 45162, 45163, 45164, 45165, 45166, 45167, 45168, 45169, 45170, 45171, 45172, 45173, 45174, 45175, 45176, 45177, 45178, 45179, 45182, 45183, 45185, 45186, 45187, 45189, 45190, 45191, 45192, 45193, 45194, 45195, 45198, 45200, 45202, 45203, 45204, 45205, 45206, 45207, 45211, 45213, 45214, 45219, 45220, 45221, 45222, 45223, 45226, 45232, 45234, 45238, 45239, 45241, 45242, 45243, 45245, 45246, 45247, 45248, 45249, 45250, 45251, 45254, 45258, 45259, 45260, 45261, 45262, 45263, 45266, null, null, null, null, null, null, 45267, 45269, 45270, 45271, 45273, 45274, 45275, 45276, 45277, 45278, 45279, 45281, 45282, 45283, 45284, 45286, 45287, 45288, 45289, 45290, 45291, 45292, 45293, 45294, 45295, 45296, null, null, null, null, null, null, 45297, 45298, 45299, 45300, 45301, 45302, 45303, 45304, 45305, 45306, 45307, 45308, 45309, 45310, 45311, 45312, 45313, 45314, 45315, 45316, 45317, 45318, 45319, 45322, 45325, 45326, 45327, 45329, 45332, 45333, 45334, 45335, 45338, 45342, 45343, 45344, 45345, 45346, 45350, 45351, 45353, 45354, 45355, 45357, 45358, 45359, 45360, 45361, 45362, 45363, 45366, 45370, 45371, 45372, 45373, 45374, 45375, 45378, 45379, 45381, 45382, 45383, 45385, 45386, 45387, 45388, 45389, 45390, 45391, 45394, 45395, 45398, 45399, 45401, 45402, 45403, 45405, 45406, 45407, 45409, 45410, 45411, 45412, 45413, 45414, 45415, 45416, 45417, 45418, 45419, 45420, 45421, 45422, 45423, 45424, 45425, 45426, 45427, 45428, 45429, 45430, 45431, 45434, 45435, 45437, 45438, 45439, 45441, 45443, 45444, 45445, 45446, 45447, 45450, 45452, 45454, 45455, 45456, 45457, 45461, 45462, 45463, 45465, 45466, 45467, 45469, 45470, 45471, 45472, 45473, 45474, 45475, 45476, 45477, 45478, 45479, 45481, 45482, 45483, 45484, 45485, 45486, 45487, 45488, 45489, 45490, 45491, 45492, 45493, 45494, 45495, 45496, null, null, null, null, null, null, 45497, 45498, 45499, 45500, 45501, 45502, 45503, 45504, 45505, 45506, 45507, 45508, 45509, 45510, 45511, 45512, 45513, 45514, 45515, 45517, 45518, 45519, 45521, 45522, 45523, 45525, null, null, null, null, null, null, 45526, 45527, 45528, 45529, 45530, 45531, 45534, 45536, 45537, 45538, 45539, 45540, 45541, 45542, 45543, 45546, 45547, 45549, 45550, 45551, 45553, 45554, 45555, 45556, 45557, 45558, 45559, 45560, 45562, 45564, 45566, 45567, 45568, 45569, 45570, 45571, 45574, 45575, 45577, 45578, 45581, 45582, 45583, 45584, 45585, 45586, 45587, 45590, 45592, 45594, 45595, 45596, 45597, 45598, 45599, 45601, 45602, 45603, 45604, 45605, 45606, 45607, 45608, 45609, 45610, 45611, 45612, 45613, 45614, 45615, 45616, 45617, 45618, 45619, 45621, 45622, 45623, 45624, 45625, 45626, 45627, 45629, 45630, 45631, 45632, 45633, 45634, 45635, 45636, 45637, 45638, 45639, 45640, 45641, 45642, 45643, 45644, 45645, 45646, 45647, 45648, 45649, 45650, 45651, 45652, 45653, 45654, 45655, 45657, 45658, 45659, 45661, 45662, 45663, 45665, 45666, 45667, 45668, 45669, 45670, 45671, 45674, 45675, 45676, 45677, 45678, 45679, 45680, 45681, 45682, 45683, 45686, 45687, 45688, 45689, 45690, 45691, 45693, 45694, 45695, 45696, 45697, 45698, 45699, 45702, 45703, 45704, 45706, 45707, 45708, 45709, 45710, null, null, null, null, null, null, 45711, 45714, 45715, 45717, 45718, 45719, 45723, 45724, 45725, 45726, 45727, 45730, 45732, 45735, 45736, 45737, 45739, 45741, 45742, 45743, 45745, 45746, 45747, 45749, 45750, 45751, null, null, null, null, null, null, 45752, 45753, 45754, 45755, 45756, 45757, 45758, 45759, 45760, 45761, 45762, 45763, 45764, 45765, 45766, 45767, 45770, 45771, 45773, 45774, 45775, 45777, 45779, 45780, 45781, 45782, 45783, 45786, 45788, 45790, 45791, 45792, 45793, 45795, 45799, 45801, 45802, 45808, 45809, 45810, 45814, 45820, 45821, 45822, 45826, 45827, 45829, 45830, 45831, 45833, 45834, 45835, 45836, 45837, 45838, 45839, 45842, 45846, 45847, 45848, 45849, 45850, 45851, 45853, 45854, 45855, 45856, 45857, 45858, 45859, 45860, 45861, 45862, 45863, 45864, 45865, 45866, 45867, 45868, 45869, 45870, 45871, 45872, 45873, 45874, 45875, 45876, 45877, 45878, 45879, 45880, 45881, 45882, 45883, 45884, 45885, 45886, 45887, 45888, 45889, 45890, 45891, 45892, 45893, 45894, 45895, 45896, 45897, 45898, 45899, 45900, 45901, 45902, 45903, 45904, 45905, 45906, 45907, 45911, 45913, 45914, 45917, 45920, 45921, 45922, 45923, 45926, 45928, 45930, 45932, 45933, 45935, 45938, 45939, 45941, 45942, 45943, 45945, 45946, 45947, 45948, 45949, 45950, 45951, 45954, 45958, 45959, 45960, 45961, 45962, 45963, 45965, null, null, null, null, null, null, 45966, 45967, 45969, 45970, 45971, 45973, 45974, 45975, 45976, 45977, 45978, 45979, 45980, 45981, 45982, 45983, 45986, 45987, 45988, 45989, 45990, 45991, 45993, 45994, 45995, 45997, null, null, null, null, null, null, 45998, 45999, 46e3, 46001, 46002, 46003, 46004, 46005, 46006, 46007, 46008, 46009, 46010, 46011, 46012, 46013, 46014, 46015, 46016, 46017, 46018, 46019, 46022, 46023, 46025, 46026, 46029, 46031, 46033, 46034, 46035, 46038, 46040, 46042, 46044, 46046, 46047, 46049, 46050, 46051, 46053, 46054, 46055, 46057, 46058, 46059, 46060, 46061, 46062, 46063, 46064, 46065, 46066, 46067, 46068, 46069, 46070, 46071, 46072, 46073, 46074, 46075, 46077, 46078, 46079, 46080, 46081, 46082, 46083, 46084, 46085, 46086, 46087, 46088, 46089, 46090, 46091, 46092, 46093, 46094, 46095, 46097, 46098, 46099, 46100, 46101, 46102, 46103, 46105, 46106, 46107, 46109, 46110, 46111, 46113, 46114, 46115, 46116, 46117, 46118, 46119, 46122, 46124, 46125, 46126, 46127, 46128, 46129, 46130, 46131, 46133, 46134, 46135, 46136, 46137, 46138, 46139, 46140, 46141, 46142, 46143, 46144, 46145, 46146, 46147, 46148, 46149, 46150, 46151, 46152, 46153, 46154, 46155, 46156, 46157, 46158, 46159, 46162, 46163, 46165, 46166, 46167, 46169, 46170, 46171, 46172, 46173, 46174, 46175, 46178, 46180, 46182, null, null, null, null, null, null, 46183, 46184, 46185, 46186, 46187, 46189, 46190, 46191, 46192, 46193, 46194, 46195, 46196, 46197, 46198, 46199, 46200, 46201, 46202, 46203, 46204, 46205, 46206, 46207, 46209, 46210, null, null, null, null, null, null, 46211, 46212, 46213, 46214, 46215, 46217, 46218, 46219, 46220, 46221, 46222, 46223, 46224, 46225, 46226, 46227, 46228, 46229, 46230, 46231, 46232, 46233, 46234, 46235, 46236, 46238, 46239, 46240, 46241, 46242, 46243, 46245, 46246, 46247, 46249, 46250, 46251, 46253, 46254, 46255, 46256, 46257, 46258, 46259, 46260, 46262, 46264, 46266, 46267, 46268, 46269, 46270, 46271, 46273, 46274, 46275, 46277, 46278, 46279, 46281, 46282, 46283, 46284, 46285, 46286, 46287, 46289, 46290, 46291, 46292, 46294, 46295, 46296, 46297, 46298, 46299, 46302, 46303, 46305, 46306, 46309, 46311, 46312, 46313, 46314, 46315, 46318, 46320, 46322, 46323, 46324, 46325, 46326, 46327, 46329, 46330, 46331, 46332, 46333, 46334, 46335, 46336, 46337, 46338, 46339, 46340, 46341, 46342, 46343, 46344, 46345, 46346, 46347, 46348, 46349, 46350, 46351, 46352, 46353, 46354, 46355, 46358, 46359, 46361, 46362, 46365, 46366, 46367, 46368, 46369, 46370, 46371, 46374, 46379, 46380, 46381, 46382, 46383, 46386, 46387, 46389, 46390, 46391, 46393, 46394, 46395, 46396, 46397, 46398, 46399, 46402, 46406, null, null, null, null, null, null, 46407, 46408, 46409, 46410, 46414, 46415, 46417, 46418, 46419, 46421, 46422, 46423, 46424, 46425, 46426, 46427, 46430, 46434, 46435, 46436, 46437, 46438, 46439, 46440, 46441, 46442, null, null, null, null, null, null, 46443, 46444, 46445, 46446, 46447, 46448, 46449, 46450, 46451, 46452, 46453, 46454, 46455, 46456, 46457, 46458, 46459, 46460, 46461, 46462, 46463, 46464, 46465, 46466, 46467, 46468, 46469, 46470, 46471, 46472, 46473, 46474, 46475, 46476, 46477, 46478, 46479, 46480, 46481, 46482, 46483, 46484, 46485, 46486, 46487, 46488, 46489, 46490, 46491, 46492, 46493, 46494, 46495, 46498, 46499, 46501, 46502, 46503, 46505, 46508, 46509, 46510, 46511, 46514, 46518, 46519, 46520, 46521, 46522, 46526, 46527, 46529, 46530, 46531, 46533, 46534, 46535, 46536, 46537, 46538, 46539, 46542, 46546, 46547, 46548, 46549, 46550, 46551, 46553, 46554, 46555, 46556, 46557, 46558, 46559, 46560, 46561, 46562, 46563, 46564, 46565, 46566, 46567, 46568, 46569, 46570, 46571, 46573, 46574, 46575, 46576, 46577, 46578, 46579, 46580, 46581, 46582, 46583, 46584, 46585, 46586, 46587, 46588, 46589, 46590, 46591, 46592, 46593, 46594, 46595, 46596, 46597, 46598, 46599, 46600, 46601, 46602, 46603, 46604, 46605, 46606, 46607, 46610, 46611, 46613, 46614, 46615, 46617, 46618, 46619, 46620, 46621, null, null, null, null, null, null, 46622, 46623, 46624, 46625, 46626, 46627, 46628, 46630, 46631, 46632, 46633, 46634, 46635, 46637, 46638, 46639, 46640, 46641, 46642, 46643, 46645, 46646, 46647, 46648, 46649, 46650, null, null, null, null, null, null, 46651, 46652, 46653, 46654, 46655, 46656, 46657, 46658, 46659, 46660, 46661, 46662, 46663, 46665, 46666, 46667, 46668, 46669, 46670, 46671, 46672, 46673, 46674, 46675, 46676, 46677, 46678, 46679, 46680, 46681, 46682, 46683, 46684, 46685, 46686, 46687, 46688, 46689, 46690, 46691, 46693, 46694, 46695, 46697, 46698, 46699, 46700, 46701, 46702, 46703, 46704, 46705, 46706, 46707, 46708, 46709, 46710, 46711, 46712, 46713, 46714, 46715, 46716, 46717, 46718, 46719, 46720, 46721, 46722, 46723, 46724, 46725, 46726, 46727, 46728, 46729, 46730, 46731, 46732, 46733, 46734, 46735, 46736, 46737, 46738, 46739, 46740, 46741, 46742, 46743, 46744, 46745, 46746, 46747, 46750, 46751, 46753, 46754, 46755, 46757, 46758, 46759, 46760, 46761, 46762, 46765, 46766, 46767, 46768, 46770, 46771, 46772, 46773, 46774, 46775, 46776, 46777, 46778, 46779, 46780, 46781, 46782, 46783, 46784, 46785, 46786, 46787, 46788, 46789, 46790, 46791, 46792, 46793, 46794, 46795, 46796, 46797, 46798, 46799, 46800, 46801, 46802, 46803, 46805, 46806, 46807, 46808, 46809, 46810, 46811, 46812, 46813, null, null, null, null, null, null, 46814, 46815, 46816, 46817, 46818, 46819, 46820, 46821, 46822, 46823, 46824, 46825, 46826, 46827, 46828, 46829, 46830, 46831, 46833, 46834, 46835, 46837, 46838, 46839, 46841, 46842, null, null, null, null, null, null, 46843, 46844, 46845, 46846, 46847, 46850, 46851, 46852, 46854, 46855, 46856, 46857, 46858, 46859, 46860, 46861, 46862, 46863, 46864, 46865, 46866, 46867, 46868, 46869, 46870, 46871, 46872, 46873, 46874, 46875, 46876, 46877, 46878, 46879, 46880, 46881, 46882, 46883, 46884, 46885, 46886, 46887, 46890, 46891, 46893, 46894, 46897, 46898, 46899, 46900, 46901, 46902, 46903, 46906, 46908, 46909, 46910, 46911, 46912, 46913, 46914, 46915, 46917, 46918, 46919, 46921, 46922, 46923, 46925, 46926, 46927, 46928, 46929, 46930, 46931, 46934, 46935, 46936, 46937, 46938, 46939, 46940, 46941, 46942, 46943, 46945, 46946, 46947, 46949, 46950, 46951, 46953, 46954, 46955, 46956, 46957, 46958, 46959, 46962, 46964, 46966, 46967, 46968, 46969, 46970, 46971, 46974, 46975, 46977, 46978, 46979, 46981, 46982, 46983, 46984, 46985, 46986, 46987, 46990, 46995, 46996, 46997, 47002, 47003, 47005, 47006, 47007, 47009, 47010, 47011, 47012, 47013, 47014, 47015, 47018, 47022, 47023, 47024, 47025, 47026, 47027, 47030, 47031, 47033, 47034, 47035, 47036, 47037, 47038, 47039, 47040, 47041, null, null, null, null, null, null, 47042, 47043, 47044, 47045, 47046, 47048, 47050, 47051, 47052, 47053, 47054, 47055, 47056, 47057, 47058, 47059, 47060, 47061, 47062, 47063, 47064, 47065, 47066, 47067, 47068, 47069, null, null, null, null, null, null, 47070, 47071, 47072, 47073, 47074, 47075, 47076, 47077, 47078, 47079, 47080, 47081, 47082, 47083, 47086, 47087, 47089, 47090, 47091, 47093, 47094, 47095, 47096, 47097, 47098, 47099, 47102, 47106, 47107, 47108, 47109, 47110, 47114, 47115, 47117, 47118, 47119, 47121, 47122, 47123, 47124, 47125, 47126, 47127, 47130, 47132, 47134, 47135, 47136, 47137, 47138, 47139, 47142, 47143, 47145, 47146, 47147, 47149, 47150, 47151, 47152, 47153, 47154, 47155, 47158, 47162, 47163, 47164, 47165, 47166, 47167, 47169, 47170, 47171, 47173, 47174, 47175, 47176, 47177, 47178, 47179, 47180, 47181, 47182, 47183, 47184, 47186, 47188, 47189, 47190, 47191, 47192, 47193, 47194, 47195, 47198, 47199, 47201, 47202, 47203, 47205, 47206, 47207, 47208, 47209, 47210, 47211, 47214, 47216, 47218, 47219, 47220, 47221, 47222, 47223, 47225, 47226, 47227, 47229, 47230, 47231, 47232, 47233, 47234, 47235, 47236, 47237, 47238, 47239, 47240, 47241, 47242, 47243, 47244, 47246, 47247, 47248, 47249, 47250, 47251, 47252, 47253, 47254, 47255, 47256, 47257, 47258, 47259, 47260, 47261, 47262, 47263, null, null, null, null, null, null, 47264, 47265, 47266, 47267, 47268, 47269, 47270, 47271, 47273, 47274, 47275, 47276, 47277, 47278, 47279, 47281, 47282, 47283, 47285, 47286, 47287, 47289, 47290, 47291, 47292, 47293, null, null, null, null, null, null, 47294, 47295, 47298, 47300, 47302, 47303, 47304, 47305, 47306, 47307, 47309, 47310, 47311, 47313, 47314, 47315, 47317, 47318, 47319, 47320, 47321, 47322, 47323, 47324, 47326, 47328, 47330, 47331, 47332, 47333, 47334, 47335, 47338, 47339, 47341, 47342, 47343, 47345, 47346, 47347, 47348, 47349, 47350, 47351, 47354, 47356, 47358, 47359, 47360, 47361, 47362, 47363, 47365, 47366, 47367, 47368, 47369, 47370, 47371, 47372, 47373, 47374, 47375, 47376, 47377, 47378, 47379, 47380, 47381, 47382, 47383, 47385, 47386, 47387, 47388, 47389, 47390, 47391, 47393, 47394, 47395, 47396, 47397, 47398, 47399, 47400, 47401, 47402, 47403, 47404, 47405, 47406, 47407, 47408, 47409, 47410, 47411, 47412, 47413, 47414, 47415, 47416, 47417, 47418, 47419, 47422, 47423, 47425, 47426, 47427, 47429, 47430, 47431, 47432, 47433, 47434, 47435, 47437, 47438, 47440, 47442, 47443, 47444, 47445, 47446, 47447, 47450, 47451, 47453, 47454, 47455, 47457, 47458, 47459, 47460, 47461, 47462, 47463, 47466, 47468, 47470, 47471, 47472, 47473, 47474, 47475, 47478, 47479, 47481, 47482, 47483, 47485, null, null, null, null, null, null, 47486, 47487, 47488, 47489, 47490, 47491, 47494, 47496, 47499, 47500, 47503, 47504, 47505, 47506, 47507, 47508, 47509, 47510, 47511, 47512, 47513, 47514, 47515, 47516, 47517, 47518, null, null, null, null, null, null, 47519, 47520, 47521, 47522, 47523, 47524, 47525, 47526, 47527, 47528, 47529, 47530, 47531, 47534, 47535, 47537, 47538, 47539, 47541, 47542, 47543, 47544, 47545, 47546, 47547, 47550, 47552, 47554, 47555, 47556, 47557, 47558, 47559, 47562, 47563, 47565, 47571, 47572, 47573, 47574, 47575, 47578, 47580, 47583, 47584, 47586, 47590, 47591, 47593, 47594, 47595, 47597, 47598, 47599, 47600, 47601, 47602, 47603, 47606, 47611, 47612, 47613, 47614, 47615, 47618, 47619, 47620, 47621, 47622, 47623, 47625, 47626, 47627, 47628, 47629, 47630, 47631, 47632, 47633, 47634, 47635, 47636, 47638, 47639, 47640, 47641, 47642, 47643, 47644, 47645, 47646, 47647, 47648, 47649, 47650, 47651, 47652, 47653, 47654, 47655, 47656, 47657, 47658, 47659, 47660, 47661, 47662, 47663, 47664, 47665, 47666, 47667, 47668, 47669, 47670, 47671, 47674, 47675, 47677, 47678, 47679, 47681, 47683, 47684, 47685, 47686, 47687, 47690, 47692, 47695, 47696, 47697, 47698, 47702, 47703, 47705, 47706, 47707, 47709, 47710, 47711, 47712, 47713, 47714, 47715, 47718, 47722, 47723, 47724, 47725, 47726, 47727, null, null, null, null, null, null, 47730, 47731, 47733, 47734, 47735, 47737, 47738, 47739, 47740, 47741, 47742, 47743, 47744, 47745, 47746, 47750, 47752, 47753, 47754, 47755, 47757, 47758, 47759, 47760, 47761, 47762, null, null, null, null, null, null, 47763, 47764, 47765, 47766, 47767, 47768, 47769, 47770, 47771, 47772, 47773, 47774, 47775, 47776, 47777, 47778, 47779, 47780, 47781, 47782, 47783, 47786, 47789, 47790, 47791, 47793, 47795, 47796, 47797, 47798, 47799, 47802, 47804, 47806, 47807, 47808, 47809, 47810, 47811, 47813, 47814, 47815, 47817, 47818, 47819, 47820, 47821, 47822, 47823, 47824, 47825, 47826, 47827, 47828, 47829, 47830, 47831, 47834, 47835, 47836, 47837, 47838, 47839, 47840, 47841, 47842, 47843, 47844, 47845, 47846, 47847, 47848, 47849, 47850, 47851, 47852, 47853, 47854, 47855, 47856, 47857, 47858, 47859, 47860, 47861, 47862, 47863, 47864, 47865, 47866, 47867, 47869, 47870, 47871, 47873, 47874, 47875, 47877, 47878, 47879, 47880, 47881, 47882, 47883, 47884, 47886, 47888, 47890, 47891, 47892, 47893, 47894, 47895, 47897, 47898, 47899, 47901, 47902, 47903, 47905, 47906, 47907, 47908, 47909, 47910, 47911, 47912, 47914, 47916, 47917, 47918, 47919, 47920, 47921, 47922, 47923, 47927, 47929, 47930, 47935, 47936, 47937, 47938, 47939, 47942, 47944, 47946, 47947, 47948, 47950, 47953, 47954, null, null, null, null, null, null, 47955, 47957, 47958, 47959, 47961, 47962, 47963, 47964, 47965, 47966, 47967, 47968, 47970, 47972, 47973, 47974, 47975, 47976, 47977, 47978, 47979, 47981, 47982, 47983, 47984, 47985, null, null, null, null, null, null, 47986, 47987, 47988, 47989, 47990, 47991, 47992, 47993, 47994, 47995, 47996, 47997, 47998, 47999, 48e3, 48001, 48002, 48003, 48004, 48005, 48006, 48007, 48009, 48010, 48011, 48013, 48014, 48015, 48017, 48018, 48019, 48020, 48021, 48022, 48023, 48024, 48025, 48026, 48027, 48028, 48029, 48030, 48031, 48032, 48033, 48034, 48035, 48037, 48038, 48039, 48041, 48042, 48043, 48045, 48046, 48047, 48048, 48049, 48050, 48051, 48053, 48054, 48056, 48057, 48058, 48059, 48060, 48061, 48062, 48063, 48065, 48066, 48067, 48069, 48070, 48071, 48073, 48074, 48075, 48076, 48077, 48078, 48079, 48081, 48082, 48084, 48085, 48086, 48087, 48088, 48089, 48090, 48091, 48092, 48093, 48094, 48095, 48096, 48097, 48098, 48099, 48100, 48101, 48102, 48103, 48104, 48105, 48106, 48107, 48108, 48109, 48110, 48111, 48112, 48113, 48114, 48115, 48116, 48117, 48118, 48119, 48122, 48123, 48125, 48126, 48129, 48131, 48132, 48133, 48134, 48135, 48138, 48142, 48144, 48146, 48147, 48153, 48154, 48160, 48161, 48162, 48163, 48166, 48168, 48170, 48171, 48172, 48174, 48175, 48178, 48179, 48181, null, null, null, null, null, null, 48182, 48183, 48185, 48186, 48187, 48188, 48189, 48190, 48191, 48194, 48198, 48199, 48200, 48202, 48203, 48206, 48207, 48209, 48210, 48211, 48212, 48213, 48214, 48215, 48216, 48217, null, null, null, null, null, null, 48218, 48219, 48220, 48222, 48223, 48224, 48225, 48226, 48227, 48228, 48229, 48230, 48231, 48232, 48233, 48234, 48235, 48236, 48237, 48238, 48239, 48240, 48241, 48242, 48243, 48244, 48245, 48246, 48247, 48248, 48249, 48250, 48251, 48252, 48253, 48254, 48255, 48256, 48257, 48258, 48259, 48262, 48263, 48265, 48266, 48269, 48271, 48272, 48273, 48274, 48275, 48278, 48280, 48283, 48284, 48285, 48286, 48287, 48290, 48291, 48293, 48294, 48297, 48298, 48299, 48300, 48301, 48302, 48303, 48306, 48310, 48311, 48312, 48313, 48314, 48315, 48318, 48319, 48321, 48322, 48323, 48325, 48326, 48327, 48328, 48329, 48330, 48331, 48332, 48334, 48338, 48339, 48340, 48342, 48343, 48345, 48346, 48347, 48349, 48350, 48351, 48352, 48353, 48354, 48355, 48356, 48357, 48358, 48359, 48360, 48361, 48362, 48363, 48364, 48365, 48366, 48367, 48368, 48369, 48370, 48371, 48375, 48377, 48378, 48379, 48381, 48382, 48383, 48384, 48385, 48386, 48387, 48390, 48392, 48394, 48395, 48396, 48397, 48398, 48399, 48401, 48402, 48403, 48405, 48406, 48407, 48408, 48409, 48410, 48411, 48412, 48413, null, null, null, null, null, null, 48414, 48415, 48416, 48417, 48418, 48419, 48421, 48422, 48423, 48424, 48425, 48426, 48427, 48429, 48430, 48431, 48432, 48433, 48434, 48435, 48436, 48437, 48438, 48439, 48440, 48441, null, null, null, null, null, null, 48442, 48443, 48444, 48445, 48446, 48447, 48449, 48450, 48451, 48452, 48453, 48454, 48455, 48458, 48459, 48461, 48462, 48463, 48465, 48466, 48467, 48468, 48469, 48470, 48471, 48474, 48475, 48476, 48477, 48478, 48479, 48480, 48481, 48482, 48483, 48485, 48486, 48487, 48489, 48490, 48491, 48492, 48493, 48494, 48495, 48496, 48497, 48498, 48499, 48500, 48501, 48502, 48503, 48504, 48505, 48506, 48507, 48508, 48509, 48510, 48511, 48514, 48515, 48517, 48518, 48523, 48524, 48525, 48526, 48527, 48530, 48532, 48534, 48535, 48536, 48539, 48541, 48542, 48543, 48544, 48545, 48546, 48547, 48549, 48550, 48551, 48552, 48553, 48554, 48555, 48556, 48557, 48558, 48559, 48561, 48562, 48563, 48564, 48565, 48566, 48567, 48569, 48570, 48571, 48572, 48573, 48574, 48575, 48576, 48577, 48578, 48579, 48580, 48581, 48582, 48583, 48584, 48585, 48586, 48587, 48588, 48589, 48590, 48591, 48592, 48593, 48594, 48595, 48598, 48599, 48601, 48602, 48603, 48605, 48606, 48607, 48608, 48609, 48610, 48611, 48612, 48613, 48614, 48615, 48616, 48618, 48619, 48620, 48621, 48622, 48623, 48625, null, null, null, null, null, null, 48626, 48627, 48629, 48630, 48631, 48633, 48634, 48635, 48636, 48637, 48638, 48639, 48641, 48642, 48644, 48646, 48647, 48648, 48649, 48650, 48651, 48654, 48655, 48657, 48658, 48659, null, null, null, null, null, null, 48661, 48662, 48663, 48664, 48665, 48666, 48667, 48670, 48672, 48673, 48674, 48675, 48676, 48677, 48678, 48679, 48680, 48681, 48682, 48683, 48684, 48685, 48686, 48687, 48688, 48689, 48690, 48691, 48692, 48693, 48694, 48695, 48696, 48697, 48698, 48699, 48700, 48701, 48702, 48703, 48704, 48705, 48706, 48707, 48710, 48711, 48713, 48714, 48715, 48717, 48719, 48720, 48721, 48722, 48723, 48726, 48728, 48732, 48733, 48734, 48735, 48738, 48739, 48741, 48742, 48743, 48745, 48747, 48748, 48749, 48750, 48751, 48754, 48758, 48759, 48760, 48761, 48762, 48766, 48767, 48769, 48770, 48771, 48773, 48774, 48775, 48776, 48777, 48778, 48779, 48782, 48786, 48787, 48788, 48789, 48790, 48791, 48794, 48795, 48796, 48797, 48798, 48799, 48800, 48801, 48802, 48803, 48804, 48805, 48806, 48807, 48809, 48810, 48811, 48812, 48813, 48814, 48815, 48816, 48817, 48818, 48819, 48820, 48821, 48822, 48823, 48824, 48825, 48826, 48827, 48828, 48829, 48830, 48831, 48832, 48833, 48834, 48835, 48836, 48837, 48838, 48839, 48840, 48841, 48842, 48843, 48844, 48845, 48846, 48847, 48850, 48851, null, null, null, null, null, null, 48853, 48854, 48857, 48858, 48859, 48860, 48861, 48862, 48863, 48865, 48866, 48870, 48871, 48872, 48873, 48874, 48875, 48877, 48878, 48879, 48880, 48881, 48882, 48883, 48884, 48885, null, null, null, null, null, null, 48886, 48887, 48888, 48889, 48890, 48891, 48892, 48893, 48894, 48895, 48896, 48898, 48899, 48900, 48901, 48902, 48903, 48906, 48907, 48908, 48909, 48910, 48911, 48912, 48913, 48914, 48915, 48916, 48917, 48918, 48919, 48922, 48926, 48927, 48928, 48929, 48930, 48931, 48932, 48933, 48934, 48935, 48936, 48937, 48938, 48939, 48940, 48941, 48942, 48943, 48944, 48945, 48946, 48947, 48948, 48949, 48950, 48951, 48952, 48953, 48954, 48955, 48956, 48957, 48958, 48959, 48962, 48963, 48965, 48966, 48967, 48969, 48970, 48971, 48972, 48973, 48974, 48975, 48978, 48979, 48980, 48982, 48983, 48984, 48985, 48986, 48987, 48988, 48989, 48990, 48991, 48992, 48993, 48994, 48995, 48996, 48997, 48998, 48999, 49e3, 49001, 49002, 49003, 49004, 49005, 49006, 49007, 49008, 49009, 49010, 49011, 49012, 49013, 49014, 49015, 49016, 49017, 49018, 49019, 49020, 49021, 49022, 49023, 49024, 49025, 49026, 49027, 49028, 49029, 49030, 49031, 49032, 49033, 49034, 49035, 49036, 49037, 49038, 49039, 49040, 49041, 49042, 49043, 49045, 49046, 49047, 49048, 49049, 49050, 49051, 49052, 49053, null, null, null, null, null, null, 49054, 49055, 49056, 49057, 49058, 49059, 49060, 49061, 49062, 49063, 49064, 49065, 49066, 49067, 49068, 49069, 49070, 49071, 49073, 49074, 49075, 49076, 49077, 49078, 49079, 49080, null, null, null, null, null, null, 49081, 49082, 49083, 49084, 49085, 49086, 49087, 49088, 49089, 49090, 49091, 49092, 49094, 49095, 49096, 49097, 49098, 49099, 49102, 49103, 49105, 49106, 49107, 49109, 49110, 49111, 49112, 49113, 49114, 49115, 49117, 49118, 49120, 49122, 49123, 49124, 49125, 49126, 49127, 49128, 49129, 49130, 49131, 49132, 49133, 49134, 49135, 49136, 49137, 49138, 49139, 49140, 49141, 49142, 49143, 49144, 49145, 49146, 49147, 49148, 49149, 49150, 49151, 49152, 49153, 49154, 49155, 49156, 49157, 49158, 49159, 49160, 49161, 49162, 49163, 49164, 49165, 49166, 49167, 49168, 49169, 49170, 49171, 49172, 49173, 49174, 49175, 49176, 49177, 49178, 49179, 49180, 49181, 49182, 49183, 49184, 49185, 49186, 49187, 49188, 49189, 49190, 49191, 49192, 49193, 49194, 49195, 49196, 49197, 49198, 49199, 49200, 49201, 49202, 49203, 49204, 49205, 49206, 49207, 49208, 49209, 49210, 49211, 49213, 49214, 49215, 49216, 49217, 49218, 49219, 49220, 49221, 49222, 49223, 49224, 49225, 49226, 49227, 49228, 49229, 49230, 49231, 49232, 49234, 49235, 49236, 49237, 49238, 49239, 49241, 49242, 49243, null, null, null, null, null, null, 49245, 49246, 49247, 49249, 49250, 49251, 49252, 49253, 49254, 49255, 49258, 49259, 49260, 49261, 49262, 49263, 49264, 49265, 49266, 49267, 49268, 49269, 49270, 49271, 49272, 49273, null, null, null, null, null, null, 49274, 49275, 49276, 49277, 49278, 49279, 49280, 49281, 49282, 49283, 49284, 49285, 49286, 49287, 49288, 49289, 49290, 49291, 49292, 49293, 49294, 49295, 49298, 49299, 49301, 49302, 49303, 49305, 49306, 49307, 49308, 49309, 49310, 49311, 49314, 49316, 49318, 49319, 49320, 49321, 49322, 49323, 49326, 49329, 49330, 49335, 49336, 49337, 49338, 49339, 49342, 49346, 49347, 49348, 49350, 49351, 49354, 49355, 49357, 49358, 49359, 49361, 49362, 49363, 49364, 49365, 49366, 49367, 49370, 49374, 49375, 49376, 49377, 49378, 49379, 49382, 49383, 49385, 49386, 49387, 49389, 49390, 49391, 49392, 49393, 49394, 49395, 49398, 49400, 49402, 49403, 49404, 49405, 49406, 49407, 49409, 49410, 49411, 49413, 49414, 49415, 49417, 49418, 49419, 49420, 49421, 49422, 49423, 49425, 49426, 49427, 49428, 49430, 49431, 49432, 49433, 49434, 49435, 49441, 49442, 49445, 49448, 49449, 49450, 49451, 49454, 49458, 49459, 49460, 49461, 49463, 49466, 49467, 49469, 49470, 49471, 49473, 49474, 49475, 49476, 49477, 49478, 49479, 49482, 49486, 49487, 49488, 49489, 49490, 49491, 49494, 49495, null, null, null, null, null, null, 49497, 49498, 49499, 49501, 49502, 49503, 49504, 49505, 49506, 49507, 49510, 49514, 49515, 49516, 49517, 49518, 49519, 49521, 49522, 49523, 49525, 49526, 49527, 49529, 49530, 49531, null, null, null, null, null, null, 49532, 49533, 49534, 49535, 49536, 49537, 49538, 49539, 49540, 49542, 49543, 49544, 49545, 49546, 49547, 49551, 49553, 49554, 49555, 49557, 49559, 49560, 49561, 49562, 49563, 49566, 49568, 49570, 49571, 49572, 49574, 49575, 49578, 49579, 49581, 49582, 49583, 49585, 49586, 49587, 49588, 49589, 49590, 49591, 49592, 49593, 49594, 49595, 49596, 49598, 49599, 49600, 49601, 49602, 49603, 49605, 49606, 49607, 49609, 49610, 49611, 49613, 49614, 49615, 49616, 49617, 49618, 49619, 49621, 49622, 49625, 49626, 49627, 49628, 49629, 49630, 49631, 49633, 49634, 49635, 49637, 49638, 49639, 49641, 49642, 49643, 49644, 49645, 49646, 49647, 49650, 49652, 49653, 49654, 49655, 49656, 49657, 49658, 49659, 49662, 49663, 49665, 49666, 49667, 49669, 49670, 49671, 49672, 49673, 49674, 49675, 49678, 49680, 49682, 49683, 49684, 49685, 49686, 49687, 49690, 49691, 49693, 49694, 49697, 49698, 49699, 49700, 49701, 49702, 49703, 49706, 49708, 49710, 49712, 49715, 49717, 49718, 49719, 49720, 49721, 49722, 49723, 49724, 49725, 49726, 49727, 49728, 49729, 49730, 49731, 49732, 49733, null, null, null, null, null, null, 49734, 49735, 49737, 49738, 49739, 49740, 49741, 49742, 49743, 49746, 49747, 49749, 49750, 49751, 49753, 49754, 49755, 49756, 49757, 49758, 49759, 49761, 49762, 49763, 49764, 49766, null, null, null, null, null, null, 49767, 49768, 49769, 49770, 49771, 49774, 49775, 49777, 49778, 49779, 49781, 49782, 49783, 49784, 49785, 49786, 49787, 49790, 49792, 49794, 49795, 49796, 49797, 49798, 49799, 49802, 49803, 49804, 49805, 49806, 49807, 49809, 49810, 49811, 49812, 49813, 49814, 49815, 49817, 49818, 49820, 49822, 49823, 49824, 49825, 49826, 49827, 49830, 49831, 49833, 49834, 49835, 49838, 49839, 49840, 49841, 49842, 49843, 49846, 49848, 49850, 49851, 49852, 49853, 49854, 49855, 49856, 49857, 49858, 49859, 49860, 49861, 49862, 49863, 49864, 49865, 49866, 49867, 49868, 49869, 49870, 49871, 49872, 49873, 49874, 49875, 49876, 49877, 49878, 49879, 49880, 49881, 49882, 49883, 49886, 49887, 49889, 49890, 49893, 49894, 49895, 49896, 49897, 49898, 49902, 49904, 49906, 49907, 49908, 49909, 49911, 49914, 49917, 49918, 49919, 49921, 49922, 49923, 49924, 49925, 49926, 49927, 49930, 49931, 49934, 49935, 49936, 49937, 49938, 49942, 49943, 49945, 49946, 49947, 49949, 49950, 49951, 49952, 49953, 49954, 49955, 49958, 49959, 49962, 49963, 49964, 49965, 49966, 49967, 49968, 49969, 49970, null, null, null, null, null, null, 49971, 49972, 49973, 49974, 49975, 49976, 49977, 49978, 49979, 49980, 49981, 49982, 49983, 49984, 49985, 49986, 49987, 49988, 49990, 49991, 49992, 49993, 49994, 49995, 49996, 49997, null, null, null, null, null, null, 49998, 49999, 5e4, 50001, 50002, 50003, 50004, 50005, 50006, 50007, 50008, 50009, 50010, 50011, 50012, 50013, 50014, 50015, 50016, 50017, 50018, 50019, 50020, 50021, 50022, 50023, 50026, 50027, 50029, 50030, 50031, 50033, 50035, 50036, 50037, 50038, 50039, 50042, 50043, 50046, 50047, 50048, 50049, 50050, 50051, 50053, 50054, 50055, 50057, 50058, 50059, 50061, 50062, 50063, 50064, 50065, 50066, 50067, 50068, 50069, 50070, 50071, 50072, 50073, 50074, 50075, 50076, 50077, 50078, 50079, 50080, 50081, 50082, 50083, 50084, 50085, 50086, 50087, 50088, 50089, 50090, 50091, 50092, 50093, 50094, 50095, 50096, 50097, 50098, 50099, 50100, 50101, 50102, 50103, 50104, 50105, 50106, 50107, 50108, 50109, 50110, 50111, 50113, 50114, 50115, 50116, 50117, 50118, 50119, 50120, 50121, 50122, 50123, 50124, 50125, 50126, 50127, 50128, 50129, 50130, 50131, 50132, 50133, 50134, 50135, 50138, 50139, 50141, 50142, 50145, 50147, 50148, 50149, 50150, 50151, 50154, 50155, 50156, 50158, 50159, 50160, 50161, 50162, 50163, 50166, 50167, 50169, 50170, 50171, 50172, 50173, 50174, null, null, null, null, null, null, 50175, 50176, 50177, 50178, 50179, 50180, 50181, 50182, 50183, 50185, 50186, 50187, 50188, 50189, 50190, 50191, 50193, 50194, 50195, 50196, 50197, 50198, 50199, 50200, 50201, 50202, null, null, null, null, null, null, 50203, 50204, 50205, 50206, 50207, 50208, 50209, 50210, 50211, 50213, 50214, 50215, 50216, 50217, 50218, 50219, 50221, 50222, 50223, 50225, 50226, 50227, 50229, 50230, 50231, 50232, 50233, 50234, 50235, 50238, 50239, 50240, 50241, 50242, 50243, 50244, 50245, 50246, 50247, 50249, 50250, 50251, 50252, 50253, 50254, 50255, 50256, 50257, 50258, 50259, 50260, 50261, 50262, 50263, 50264, 50265, 50266, 50267, 50268, 50269, 50270, 50271, 50272, 50273, 50274, 50275, 50278, 50279, 50281, 50282, 50283, 50285, 50286, 50287, 50288, 50289, 50290, 50291, 50294, 50295, 50296, 50298, 50299, 50300, 50301, 50302, 50303, 50305, 50306, 50307, 50308, 50309, 50310, 50311, 50312, 50313, 50314, 50315, 50316, 50317, 50318, 50319, 50320, 50321, 50322, 50323, 50325, 50326, 50327, 50328, 50329, 50330, 50331, 50333, 50334, 50335, 50336, 50337, 50338, 50339, 50340, 50341, 50342, 50343, 50344, 50345, 50346, 50347, 50348, 50349, 50350, 50351, 50352, 50353, 50354, 50355, 50356, 50357, 50358, 50359, 50361, 50362, 50363, 50365, 50366, 50367, 50368, 50369, 50370, 50371, 50372, 50373, null, null, null, null, null, null, 50374, 50375, 50376, 50377, 50378, 50379, 50380, 50381, 50382, 50383, 50384, 50385, 50386, 50387, 50388, 50389, 50390, 50391, 50392, 50393, 50394, 50395, 50396, 50397, 50398, 50399, null, null, null, null, null, null, 50400, 50401, 50402, 50403, 50404, 50405, 50406, 50407, 50408, 50410, 50411, 50412, 50413, 50414, 50415, 50418, 50419, 50421, 50422, 50423, 50425, 50427, 50428, 50429, 50430, 50434, 50435, 50436, 50437, 50438, 50439, 50440, 50441, 50442, 50443, 50445, 50446, 50447, 50449, 50450, 50451, 50453, 50454, 50455, 50456, 50457, 50458, 50459, 50461, 50462, 50463, 50464, 50465, 50466, 50467, 50468, 50469, 50470, 50471, 50474, 50475, 50477, 50478, 50479, 50481, 50482, 50483, 50484, 50485, 50486, 50487, 50490, 50492, 50494, 50495, 50496, 50497, 50498, 50499, 50502, 50503, 50507, 50511, 50512, 50513, 50514, 50518, 50522, 50523, 50524, 50527, 50530, 50531, 50533, 50534, 50535, 50537, 50538, 50539, 50540, 50541, 50542, 50543, 50546, 50550, 50551, 50552, 50553, 50554, 50555, 50558, 50559, 50561, 50562, 50563, 50565, 50566, 50568, 50569, 50570, 50571, 50574, 50576, 50578, 50579, 50580, 50582, 50585, 50586, 50587, 50589, 50590, 50591, 50593, 50594, 50595, 50596, 50597, 50598, 50599, 50600, 50602, 50603, 50604, 50605, 50606, 50607, 50608, 50609, 50610, 50611, 50614, null, null, null, null, null, null, 50615, 50618, 50623, 50624, 50625, 50626, 50627, 50635, 50637, 50639, 50642, 50643, 50645, 50646, 50647, 50649, 50650, 50651, 50652, 50653, 50654, 50655, 50658, 50660, 50662, 50663, null, null, null, null, null, null, 50664, 50665, 50666, 50667, 50671, 50673, 50674, 50675, 50677, 50680, 50681, 50682, 50683, 50690, 50691, 50692, 50697, 50698, 50699, 50701, 50702, 50703, 50705, 50706, 50707, 50708, 50709, 50710, 50711, 50714, 50717, 50718, 50719, 50720, 50721, 50722, 50723, 50726, 50727, 50729, 50730, 50731, 50735, 50737, 50738, 50742, 50744, 50746, 50748, 50749, 50750, 50751, 50754, 50755, 50757, 50758, 50759, 50761, 50762, 50763, 50764, 50765, 50766, 50767, 50770, 50774, 50775, 50776, 50777, 50778, 50779, 50782, 50783, 50785, 50786, 50787, 50788, 50789, 50790, 50791, 50792, 50793, 50794, 50795, 50797, 50798, 50800, 50802, 50803, 50804, 50805, 50806, 50807, 50810, 50811, 50813, 50814, 50815, 50817, 50818, 50819, 50820, 50821, 50822, 50823, 50826, 50828, 50830, 50831, 50832, 50833, 50834, 50835, 50838, 50839, 50841, 50842, 50843, 50845, 50846, 50847, 50848, 50849, 50850, 50851, 50854, 50856, 50858, 50859, 50860, 50861, 50862, 50863, 50866, 50867, 50869, 50870, 50871, 50875, 50876, 50877, 50878, 50879, 50882, 50884, 50886, 50887, 50888, 50889, 50890, 50891, 50894, null, null, null, null, null, null, 50895, 50897, 50898, 50899, 50901, 50902, 50903, 50904, 50905, 50906, 50907, 50910, 50911, 50914, 50915, 50916, 50917, 50918, 50919, 50922, 50923, 50925, 50926, 50927, 50929, 50930, null, null, null, null, null, null, 50931, 50932, 50933, 50934, 50935, 50938, 50939, 50940, 50942, 50943, 50944, 50945, 50946, 50947, 50950, 50951, 50953, 50954, 50955, 50957, 50958, 50959, 50960, 50961, 50962, 50963, 50966, 50968, 50970, 50971, 50972, 50973, 50974, 50975, 50978, 50979, 50981, 50982, 50983, 50985, 50986, 50987, 50988, 50989, 50990, 50991, 50994, 50996, 50998, 51e3, 51001, 51002, 51003, 51006, 51007, 51009, 51010, 51011, 51013, 51014, 51015, 51016, 51017, 51019, 51022, 51024, 51033, 51034, 51035, 51037, 51038, 51039, 51041, 51042, 51043, 51044, 51045, 51046, 51047, 51049, 51050, 51052, 51053, 51054, 51055, 51056, 51057, 51058, 51059, 51062, 51063, 51065, 51066, 51067, 51071, 51072, 51073, 51074, 51078, 51083, 51084, 51085, 51087, 51090, 51091, 51093, 51097, 51099, 51100, 51101, 51102, 51103, 51106, 51111, 51112, 51113, 51114, 51115, 51118, 51119, 51121, 51122, 51123, 51125, 51126, 51127, 51128, 51129, 51130, 51131, 51134, 51138, 51139, 51140, 51141, 51142, 51143, 51146, 51147, 51149, 51151, 51153, 51154, 51155, 51156, 51157, 51158, 51159, 51161, 51162, 51163, 51164, null, null, null, null, null, null, 51166, 51167, 51168, 51169, 51170, 51171, 51173, 51174, 51175, 51177, 51178, 51179, 51181, 51182, 51183, 51184, 51185, 51186, 51187, 51188, 51189, 51190, 51191, 51192, 51193, 51194, null, null, null, null, null, null, 51195, 51196, 51197, 51198, 51199, 51202, 51203, 51205, 51206, 51207, 51209, 51211, 51212, 51213, 51214, 51215, 51218, 51220, 51223, 51224, 51225, 51226, 51227, 51230, 51231, 51233, 51234, 51235, 51237, 51238, 51239, 51240, 51241, 51242, 51243, 51246, 51248, 51250, 51251, 51252, 51253, 51254, 51255, 51257, 51258, 51259, 51261, 51262, 51263, 51265, 51266, 51267, 51268, 51269, 51270, 51271, 51274, 51275, 51278, 51279, 51280, 51281, 51282, 51283, 51285, 51286, 51287, 51288, 51289, 51290, 51291, 51292, 51293, 51294, 51295, 51296, 51297, 51298, 51299, 51300, 51301, 51302, 51303, 51304, 51305, 51306, 51307, 51308, 51309, 51310, 51311, 51314, 51315, 51317, 51318, 51319, 51321, 51323, 51324, 51325, 51326, 51327, 51330, 51332, 51336, 51337, 51338, 51342, 51343, 51344, 51345, 51346, 51347, 51349, 51350, 51351, 51352, 51353, 51354, 51355, 51356, 51358, 51360, 51362, 51363, 51364, 51365, 51366, 51367, 51369, 51370, 51371, 51372, 51373, 51374, 51375, 51376, 51377, 51378, 51379, 51380, 51381, 51382, 51383, 51384, 51385, 51386, 51387, 51390, 51391, 51392, 51393, null, null, null, null, null, null, 51394, 51395, 51397, 51398, 51399, 51401, 51402, 51403, 51405, 51406, 51407, 51408, 51409, 51410, 51411, 51414, 51416, 51418, 51419, 51420, 51421, 51422, 51423, 51426, 51427, 51429, null, null, null, null, null, null, 51430, 51431, 51432, 51433, 51434, 51435, 51436, 51437, 51438, 51439, 51440, 51441, 51442, 51443, 51444, 51446, 51447, 51448, 51449, 51450, 51451, 51454, 51455, 51457, 51458, 51459, 51463, 51464, 51465, 51466, 51467, 51470, 12288, 12289, 12290, 183, 8229, 8230, 168, 12291, 173, 8213, 8741, 65340, 8764, 8216, 8217, 8220, 8221, 12308, 12309, 12296, 12297, 12298, 12299, 12300, 12301, 12302, 12303, 12304, 12305, 177, 215, 247, 8800, 8804, 8805, 8734, 8756, 176, 8242, 8243, 8451, 8491, 65504, 65505, 65509, 9794, 9792, 8736, 8869, 8978, 8706, 8711, 8801, 8786, 167, 8251, 9734, 9733, 9675, 9679, 9678, 9671, 9670, 9633, 9632, 9651, 9650, 9661, 9660, 8594, 8592, 8593, 8595, 8596, 12307, 8810, 8811, 8730, 8765, 8733, 8757, 8747, 8748, 8712, 8715, 8838, 8839, 8834, 8835, 8746, 8745, 8743, 8744, 65506, 51472, 51474, 51475, 51476, 51477, 51478, 51479, 51481, 51482, 51483, 51484, 51485, 51486, 51487, 51488, 51489, 51490, 51491, 51492, 51493, 51494, 51495, 51496, 51497, 51498, 51499, null, null, null, null, null, null, 51501, 51502, 51503, 51504, 51505, 51506, 51507, 51509, 51510, 51511, 51512, 51513, 51514, 51515, 51516, 51517, 51518, 51519, 51520, 51521, 51522, 51523, 51524, 51525, 51526, 51527, null, null, null, null, null, null, 51528, 51529, 51530, 51531, 51532, 51533, 51534, 51535, 51538, 51539, 51541, 51542, 51543, 51545, 51546, 51547, 51548, 51549, 51550, 51551, 51554, 51556, 51557, 51558, 51559, 51560, 51561, 51562, 51563, 51565, 51566, 51567, 8658, 8660, 8704, 8707, 180, 65374, 711, 728, 733, 730, 729, 184, 731, 161, 191, 720, 8750, 8721, 8719, 164, 8457, 8240, 9665, 9664, 9655, 9654, 9828, 9824, 9825, 9829, 9831, 9827, 8857, 9672, 9635, 9680, 9681, 9618, 9636, 9637, 9640, 9639, 9638, 9641, 9832, 9743, 9742, 9756, 9758, 182, 8224, 8225, 8597, 8599, 8601, 8598, 8600, 9837, 9833, 9834, 9836, 12927, 12828, 8470, 13255, 8482, 13250, 13272, 8481, 8364, 174, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 51569, 51570, 51571, 51573, 51574, 51575, 51576, 51577, 51578, 51579, 51581, 51582, 51583, 51584, 51585, 51586, 51587, 51588, 51589, 51590, 51591, 51594, 51595, 51597, 51598, 51599, null, null, null, null, null, null, 51601, 51602, 51603, 51604, 51605, 51606, 51607, 51610, 51612, 51614, 51615, 51616, 51617, 51618, 51619, 51620, 51621, 51622, 51623, 51624, 51625, 51626, 51627, 51628, 51629, 51630, null, null, null, null, null, null, 51631, 51632, 51633, 51634, 51635, 51636, 51637, 51638, 51639, 51640, 51641, 51642, 51643, 51644, 51645, 51646, 51647, 51650, 51651, 51653, 51654, 51657, 51659, 51660, 51661, 51662, 51663, 51666, 51668, 51671, 51672, 51675, 65281, 65282, 65283, 65284, 65285, 65286, 65287, 65288, 65289, 65290, 65291, 65292, 65293, 65294, 65295, 65296, 65297, 65298, 65299, 65300, 65301, 65302, 65303, 65304, 65305, 65306, 65307, 65308, 65309, 65310, 65311, 65312, 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, 65339, 65510, 65341, 65342, 65343, 65344, 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, 65371, 65372, 65373, 65507, 51678, 51679, 51681, 51683, 51685, 51686, 51688, 51689, 51690, 51691, 51694, 51698, 51699, 51700, 51701, 51702, 51703, 51706, 51707, 51709, 51710, 51711, 51713, 51714, 51715, 51716, null, null, null, null, null, null, 51717, 51718, 51719, 51722, 51726, 51727, 51728, 51729, 51730, 51731, 51733, 51734, 51735, 51737, 51738, 51739, 51740, 51741, 51742, 51743, 51744, 51745, 51746, 51747, 51748, 51749, null, null, null, null, null, null, 51750, 51751, 51752, 51754, 51755, 51756, 51757, 51758, 51759, 51760, 51761, 51762, 51763, 51764, 51765, 51766, 51767, 51768, 51769, 51770, 51771, 51772, 51773, 51774, 51775, 51776, 51777, 51778, 51779, 51780, 51781, 51782, 12593, 12594, 12595, 12596, 12597, 12598, 12599, 12600, 12601, 12602, 12603, 12604, 12605, 12606, 12607, 12608, 12609, 12610, 12611, 12612, 12613, 12614, 12615, 12616, 12617, 12618, 12619, 12620, 12621, 12622, 12623, 12624, 12625, 12626, 12627, 12628, 12629, 12630, 12631, 12632, 12633, 12634, 12635, 12636, 12637, 12638, 12639, 12640, 12641, 12642, 12643, 12644, 12645, 12646, 12647, 12648, 12649, 12650, 12651, 12652, 12653, 12654, 12655, 12656, 12657, 12658, 12659, 12660, 12661, 12662, 12663, 12664, 12665, 12666, 12667, 12668, 12669, 12670, 12671, 12672, 12673, 12674, 12675, 12676, 12677, 12678, 12679, 12680, 12681, 12682, 12683, 12684, 12685, 12686, 51783, 51784, 51785, 51786, 51787, 51790, 51791, 51793, 51794, 51795, 51797, 51798, 51799, 51800, 51801, 51802, 51803, 51806, 51810, 51811, 51812, 51813, 51814, 51815, 51817, 51818, null, null, null, null, null, null, 51819, 51820, 51821, 51822, 51823, 51824, 51825, 51826, 51827, 51828, 51829, 51830, 51831, 51832, 51833, 51834, 51835, 51836, 51838, 51839, 51840, 51841, 51842, 51843, 51845, 51846, null, null, null, null, null, null, 51847, 51848, 51849, 51850, 51851, 51852, 51853, 51854, 51855, 51856, 51857, 51858, 51859, 51860, 51861, 51862, 51863, 51865, 51866, 51867, 51868, 51869, 51870, 51871, 51872, 51873, 51874, 51875, 51876, 51877, 51878, 51879, 8560, 8561, 8562, 8563, 8564, 8565, 8566, 8567, 8568, 8569, null, null, null, null, null, 8544, 8545, 8546, 8547, 8548, 8549, 8550, 8551, 8552, 8553, 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, 51880, 51881, 51882, 51883, 51884, 51885, 51886, 51887, 51888, 51889, 51890, 51891, 51892, 51893, 51894, 51895, 51896, 51897, 51898, 51899, 51902, 51903, 51905, 51906, 51907, 51909, null, null, null, null, null, null, 51910, 51911, 51912, 51913, 51914, 51915, 51918, 51920, 51922, 51924, 51925, 51926, 51927, 51930, 51931, 51932, 51933, 51934, 51935, 51937, 51938, 51939, 51940, 51941, 51942, 51943, null, null, null, null, null, null, 51944, 51945, 51946, 51947, 51949, 51950, 51951, 51952, 51953, 51954, 51955, 51957, 51958, 51959, 51960, 51961, 51962, 51963, 51964, 51965, 51966, 51967, 51968, 51969, 51970, 51971, 51972, 51973, 51974, 51975, 51977, 51978, 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, 9490, 9489, 9498, 9497, 9494, 9493, 9486, 9485, 9502, 9503, 9505, 9506, 9510, 9511, 9513, 9514, 9517, 9518, 9521, 9522, 9525, 9526, 9529, 9530, 9533, 9534, 9536, 9537, 9539, 9540, 9541, 9542, 9543, 9544, 9545, 9546, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 51979, 51980, 51981, 51982, 51983, 51985, 51986, 51987, 51989, 51990, 51991, 51993, 51994, 51995, 51996, 51997, 51998, 51999, 52002, 52003, 52004, 52005, 52006, 52007, 52008, 52009, null, null, null, null, null, null, 52010, 52011, 52012, 52013, 52014, 52015, 52016, 52017, 52018, 52019, 52020, 52021, 52022, 52023, 52024, 52025, 52026, 52027, 52028, 52029, 52030, 52031, 52032, 52034, 52035, 52036, null, null, null, null, null, null, 52037, 52038, 52039, 52042, 52043, 52045, 52046, 52047, 52049, 52050, 52051, 52052, 52053, 52054, 52055, 52058, 52059, 52060, 52062, 52063, 52064, 52065, 52066, 52067, 52069, 52070, 52071, 52072, 52073, 52074, 52075, 52076, 13205, 13206, 13207, 8467, 13208, 13252, 13219, 13220, 13221, 13222, 13209, 13210, 13211, 13212, 13213, 13214, 13215, 13216, 13217, 13218, 13258, 13197, 13198, 13199, 13263, 13192, 13193, 13256, 13223, 13224, 13232, 13233, 13234, 13235, 13236, 13237, 13238, 13239, 13240, 13241, 13184, 13185, 13186, 13187, 13188, 13242, 13243, 13244, 13245, 13246, 13247, 13200, 13201, 13202, 13203, 13204, 8486, 13248, 13249, 13194, 13195, 13196, 13270, 13253, 13229, 13230, 13231, 13275, 13225, 13226, 13227, 13228, 13277, 13264, 13267, 13251, 13257, 13276, 13254, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 52077, 52078, 52079, 52080, 52081, 52082, 52083, 52084, 52085, 52086, 52087, 52090, 52091, 52092, 52093, 52094, 52095, 52096, 52097, 52098, 52099, 52100, 52101, 52102, 52103, 52104, null, null, null, null, null, null, 52105, 52106, 52107, 52108, 52109, 52110, 52111, 52112, 52113, 52114, 52115, 52116, 52117, 52118, 52119, 52120, 52121, 52122, 52123, 52125, 52126, 52127, 52128, 52129, 52130, 52131, null, null, null, null, null, null, 52132, 52133, 52134, 52135, 52136, 52137, 52138, 52139, 52140, 52141, 52142, 52143, 52144, 52145, 52146, 52147, 52148, 52149, 52150, 52151, 52153, 52154, 52155, 52156, 52157, 52158, 52159, 52160, 52161, 52162, 52163, 52164, 198, 208, 170, 294, null, 306, null, 319, 321, 216, 338, 186, 222, 358, 330, null, 12896, 12897, 12898, 12899, 12900, 12901, 12902, 12903, 12904, 12905, 12906, 12907, 12908, 12909, 12910, 12911, 12912, 12913, 12914, 12915, 12916, 12917, 12918, 12919, 12920, 12921, 12922, 12923, 9424, 9425, 9426, 9427, 9428, 9429, 9430, 9431, 9432, 9433, 9434, 9435, 9436, 9437, 9438, 9439, 9440, 9441, 9442, 9443, 9444, 9445, 9446, 9447, 9448, 9449, 9312, 9313, 9314, 9315, 9316, 9317, 9318, 9319, 9320, 9321, 9322, 9323, 9324, 9325, 9326, 189, 8531, 8532, 188, 190, 8539, 8540, 8541, 8542, 52165, 52166, 52167, 52168, 52169, 52170, 52171, 52172, 52173, 52174, 52175, 52176, 52177, 52178, 52179, 52181, 52182, 52183, 52184, 52185, 52186, 52187, 52188, 52189, 52190, 52191, null, null, null, null, null, null, 52192, 52193, 52194, 52195, 52197, 52198, 52200, 52202, 52203, 52204, 52205, 52206, 52207, 52208, 52209, 52210, 52211, 52212, 52213, 52214, 52215, 52216, 52217, 52218, 52219, 52220, null, null, null, null, null, null, 52221, 52222, 52223, 52224, 52225, 52226, 52227, 52228, 52229, 52230, 52231, 52232, 52233, 52234, 52235, 52238, 52239, 52241, 52242, 52243, 52245, 52246, 52247, 52248, 52249, 52250, 52251, 52254, 52255, 52256, 52259, 52260, 230, 273, 240, 295, 305, 307, 312, 320, 322, 248, 339, 223, 254, 359, 331, 329, 12800, 12801, 12802, 12803, 12804, 12805, 12806, 12807, 12808, 12809, 12810, 12811, 12812, 12813, 12814, 12815, 12816, 12817, 12818, 12819, 12820, 12821, 12822, 12823, 12824, 12825, 12826, 12827, 9372, 9373, 9374, 9375, 9376, 9377, 9378, 9379, 9380, 9381, 9382, 9383, 9384, 9385, 9386, 9387, 9388, 9389, 9390, 9391, 9392, 9393, 9394, 9395, 9396, 9397, 9332, 9333, 9334, 9335, 9336, 9337, 9338, 9339, 9340, 9341, 9342, 9343, 9344, 9345, 9346, 185, 178, 179, 8308, 8319, 8321, 8322, 8323, 8324, 52261, 52262, 52266, 52267, 52269, 52271, 52273, 52274, 52275, 52276, 52277, 52278, 52279, 52282, 52287, 52288, 52289, 52290, 52291, 52294, 52295, 52297, 52298, 52299, 52301, 52302, null, null, null, null, null, null, 52303, 52304, 52305, 52306, 52307, 52310, 52314, 52315, 52316, 52317, 52318, 52319, 52321, 52322, 52323, 52325, 52327, 52329, 52330, 52331, 52332, 52333, 52334, 52335, 52337, 52338, null, null, null, null, null, null, 52339, 52340, 52342, 52343, 52344, 52345, 52346, 52347, 52348, 52349, 52350, 52351, 52352, 52353, 52354, 52355, 52356, 52357, 52358, 52359, 52360, 52361, 52362, 52363, 52364, 52365, 52366, 52367, 52368, 52369, 52370, 52371, 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, 52372, 52373, 52374, 52375, 52378, 52379, 52381, 52382, 52383, 52385, 52386, 52387, 52388, 52389, 52390, 52391, 52394, 52398, 52399, 52400, 52401, 52402, 52403, 52406, 52407, 52409, null, null, null, null, null, null, 52410, 52411, 52413, 52414, 52415, 52416, 52417, 52418, 52419, 52422, 52424, 52426, 52427, 52428, 52429, 52430, 52431, 52433, 52434, 52435, 52437, 52438, 52439, 52440, 52441, 52442, null, null, null, null, null, null, 52443, 52444, 52445, 52446, 52447, 52448, 52449, 52450, 52451, 52453, 52454, 52455, 52456, 52457, 52458, 52459, 52461, 52462, 52463, 52465, 52466, 52467, 52468, 52469, 52470, 52471, 52472, 52473, 52474, 52475, 52476, 52477, 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, 52478, 52479, 52480, 52482, 52483, 52484, 52485, 52486, 52487, 52490, 52491, 52493, 52494, 52495, 52497, 52498, 52499, 52500, 52501, 52502, 52503, 52506, 52508, 52510, 52511, 52512, null, null, null, null, null, null, 52513, 52514, 52515, 52517, 52518, 52519, 52521, 52522, 52523, 52525, 52526, 52527, 52528, 52529, 52530, 52531, 52532, 52533, 52534, 52535, 52536, 52538, 52539, 52540, 52541, 52542, null, null, null, null, null, null, 52543, 52544, 52545, 52546, 52547, 52548, 52549, 52550, 52551, 52552, 52553, 52554, 52555, 52556, 52557, 52558, 52559, 52560, 52561, 52562, 52563, 52564, 52565, 52566, 52567, 52568, 52569, 52570, 52571, 52573, 52574, 52575, 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, 52577, 52578, 52579, 52581, 52582, 52583, 52584, 52585, 52586, 52587, 52590, 52592, 52594, 52595, 52596, 52597, 52598, 52599, 52601, 52602, 52603, 52604, 52605, 52606, 52607, 52608, null, null, null, null, null, null, 52609, 52610, 52611, 52612, 52613, 52614, 52615, 52617, 52618, 52619, 52620, 52621, 52622, 52623, 52624, 52625, 52626, 52627, 52630, 52631, 52633, 52634, 52635, 52637, 52638, 52639, null, null, null, null, null, null, 52640, 52641, 52642, 52643, 52646, 52648, 52650, 52651, 52652, 52653, 52654, 52655, 52657, 52658, 52659, 52660, 52661, 52662, 52663, 52664, 52665, 52666, 52667, 52668, 52669, 52670, 52671, 52672, 52673, 52674, 52675, 52677, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 52678, 52679, 52680, 52681, 52682, 52683, 52685, 52686, 52687, 52689, 52690, 52691, 52692, 52693, 52694, 52695, 52696, 52697, 52698, 52699, 52700, 52701, 52702, 52703, 52704, 52705, null, null, null, null, null, null, 52706, 52707, 52708, 52709, 52710, 52711, 52713, 52714, 52715, 52717, 52718, 52719, 52721, 52722, 52723, 52724, 52725, 52726, 52727, 52730, 52732, 52734, 52735, 52736, 52737, 52738, null, null, null, null, null, null, 52739, 52741, 52742, 52743, 52745, 52746, 52747, 52749, 52750, 52751, 52752, 52753, 52754, 52755, 52757, 52758, 52759, 52760, 52762, 52763, 52764, 52765, 52766, 52767, 52770, 52771, 52773, 52774, 52775, 52777, 52778, 52779, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 52780, 52781, 52782, 52783, 52786, 52788, 52790, 52791, 52792, 52793, 52794, 52795, 52796, 52797, 52798, 52799, 52800, 52801, 52802, 52803, 52804, 52805, 52806, 52807, 52808, 52809, null, null, null, null, null, null, 52810, 52811, 52812, 52813, 52814, 52815, 52816, 52817, 52818, 52819, 52820, 52821, 52822, 52823, 52826, 52827, 52829, 52830, 52834, 52835, 52836, 52837, 52838, 52839, 52842, 52844, null, null, null, null, null, null, 52846, 52847, 52848, 52849, 52850, 52851, 52854, 52855, 52857, 52858, 52859, 52861, 52862, 52863, 52864, 52865, 52866, 52867, 52870, 52872, 52874, 52875, 52876, 52877, 52878, 52879, 52882, 52883, 52885, 52886, 52887, 52889, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 52890, 52891, 52892, 52893, 52894, 52895, 52898, 52902, 52903, 52904, 52905, 52906, 52907, 52910, 52911, 52912, 52913, 52914, 52915, 52916, 52917, 52918, 52919, 52920, 52921, 52922, null, null, null, null, null, null, 52923, 52924, 52925, 52926, 52927, 52928, 52930, 52931, 52932, 52933, 52934, 52935, 52936, 52937, 52938, 52939, 52940, 52941, 52942, 52943, 52944, 52945, 52946, 52947, 52948, 52949, null, null, null, null, null, null, 52950, 52951, 52952, 52953, 52954, 52955, 52956, 52957, 52958, 52959, 52960, 52961, 52962, 52963, 52966, 52967, 52969, 52970, 52973, 52974, 52975, 52976, 52977, 52978, 52979, 52982, 52986, 52987, 52988, 52989, 52990, 52991, 44032, 44033, 44036, 44039, 44040, 44041, 44042, 44048, 44049, 44050, 44051, 44052, 44053, 44054, 44055, 44057, 44058, 44059, 44060, 44061, 44064, 44068, 44076, 44077, 44079, 44080, 44081, 44088, 44089, 44092, 44096, 44107, 44109, 44116, 44120, 44124, 44144, 44145, 44148, 44151, 44152, 44154, 44160, 44161, 44163, 44164, 44165, 44166, 44169, 44170, 44171, 44172, 44176, 44180, 44188, 44189, 44191, 44192, 44193, 44200, 44201, 44202, 44204, 44207, 44208, 44216, 44217, 44219, 44220, 44221, 44225, 44228, 44232, 44236, 44245, 44247, 44256, 44257, 44260, 44263, 44264, 44266, 44268, 44271, 44272, 44273, 44275, 44277, 44278, 44284, 44285, 44288, 44292, 44294, 52994, 52995, 52997, 52998, 52999, 53001, 53002, 53003, 53004, 53005, 53006, 53007, 53010, 53012, 53014, 53015, 53016, 53017, 53018, 53019, 53021, 53022, 53023, 53025, 53026, 53027, null, null, null, null, null, null, 53029, 53030, 53031, 53032, 53033, 53034, 53035, 53038, 53042, 53043, 53044, 53045, 53046, 53047, 53049, 53050, 53051, 53052, 53053, 53054, 53055, 53056, 53057, 53058, 53059, 53060, null, null, null, null, null, null, 53061, 53062, 53063, 53064, 53065, 53066, 53067, 53068, 53069, 53070, 53071, 53072, 53073, 53074, 53075, 53078, 53079, 53081, 53082, 53083, 53085, 53086, 53087, 53088, 53089, 53090, 53091, 53094, 53096, 53098, 53099, 53100, 44300, 44301, 44303, 44305, 44312, 44316, 44320, 44329, 44332, 44333, 44340, 44341, 44344, 44348, 44356, 44357, 44359, 44361, 44368, 44372, 44376, 44385, 44387, 44396, 44397, 44400, 44403, 44404, 44405, 44406, 44411, 44412, 44413, 44415, 44417, 44418, 44424, 44425, 44428, 44432, 44444, 44445, 44452, 44471, 44480, 44481, 44484, 44488, 44496, 44497, 44499, 44508, 44512, 44516, 44536, 44537, 44540, 44543, 44544, 44545, 44552, 44553, 44555, 44557, 44564, 44592, 44593, 44596, 44599, 44600, 44602, 44608, 44609, 44611, 44613, 44614, 44618, 44620, 44621, 44622, 44624, 44628, 44630, 44636, 44637, 44639, 44640, 44641, 44645, 44648, 44649, 44652, 44656, 44664, 53101, 53102, 53103, 53106, 53107, 53109, 53110, 53111, 53113, 53114, 53115, 53116, 53117, 53118, 53119, 53121, 53122, 53123, 53124, 53126, 53127, 53128, 53129, 53130, 53131, 53133, null, null, null, null, null, null, 53134, 53135, 53136, 53137, 53138, 53139, 53140, 53141, 53142, 53143, 53144, 53145, 53146, 53147, 53148, 53149, 53150, 53151, 53152, 53154, 53155, 53156, 53157, 53158, 53159, 53161, null, null, null, null, null, null, 53162, 53163, 53164, 53165, 53166, 53167, 53169, 53170, 53171, 53172, 53173, 53174, 53175, 53176, 53177, 53178, 53179, 53180, 53181, 53182, 53183, 53184, 53185, 53186, 53187, 53189, 53190, 53191, 53192, 53193, 53194, 53195, 44665, 44667, 44668, 44669, 44676, 44677, 44684, 44732, 44733, 44734, 44736, 44740, 44748, 44749, 44751, 44752, 44753, 44760, 44761, 44764, 44776, 44779, 44781, 44788, 44792, 44796, 44807, 44808, 44813, 44816, 44844, 44845, 44848, 44850, 44852, 44860, 44861, 44863, 44865, 44866, 44867, 44872, 44873, 44880, 44892, 44893, 44900, 44901, 44921, 44928, 44932, 44936, 44944, 44945, 44949, 44956, 44984, 44985, 44988, 44992, 44999, 45e3, 45001, 45003, 45005, 45006, 45012, 45020, 45032, 45033, 45040, 45041, 45044, 45048, 45056, 45057, 45060, 45068, 45072, 45076, 45084, 45085, 45096, 45124, 45125, 45128, 45130, 45132, 45134, 45139, 45140, 45141, 45143, 45145, 53196, 53197, 53198, 53199, 53200, 53201, 53202, 53203, 53204, 53205, 53206, 53207, 53208, 53209, 53210, 53211, 53212, 53213, 53214, 53215, 53218, 53219, 53221, 53222, 53223, 53225, null, null, null, null, null, null, 53226, 53227, 53228, 53229, 53230, 53231, 53234, 53236, 53238, 53239, 53240, 53241, 53242, 53243, 53245, 53246, 53247, 53249, 53250, 53251, 53253, 53254, 53255, 53256, 53257, 53258, null, null, null, null, null, null, 53259, 53260, 53261, 53262, 53263, 53264, 53266, 53267, 53268, 53269, 53270, 53271, 53273, 53274, 53275, 53276, 53277, 53278, 53279, 53280, 53281, 53282, 53283, 53284, 53285, 53286, 53287, 53288, 53289, 53290, 53291, 53292, 45149, 45180, 45181, 45184, 45188, 45196, 45197, 45199, 45201, 45208, 45209, 45210, 45212, 45215, 45216, 45217, 45218, 45224, 45225, 45227, 45228, 45229, 45230, 45231, 45233, 45235, 45236, 45237, 45240, 45244, 45252, 45253, 45255, 45256, 45257, 45264, 45265, 45268, 45272, 45280, 45285, 45320, 45321, 45323, 45324, 45328, 45330, 45331, 45336, 45337, 45339, 45340, 45341, 45347, 45348, 45349, 45352, 45356, 45364, 45365, 45367, 45368, 45369, 45376, 45377, 45380, 45384, 45392, 45393, 45396, 45397, 45400, 45404, 45408, 45432, 45433, 45436, 45440, 45442, 45448, 45449, 45451, 45453, 45458, 45459, 45460, 45464, 45468, 45480, 45516, 45520, 45524, 45532, 45533, 53294, 53295, 53296, 53297, 53298, 53299, 53302, 53303, 53305, 53306, 53307, 53309, 53310, 53311, 53312, 53313, 53314, 53315, 53318, 53320, 53322, 53323, 53324, 53325, 53326, 53327, null, null, null, null, null, null, 53329, 53330, 53331, 53333, 53334, 53335, 53337, 53338, 53339, 53340, 53341, 53342, 53343, 53345, 53346, 53347, 53348, 53349, 53350, 53351, 53352, 53353, 53354, 53355, 53358, 53359, null, null, null, null, null, null, 53361, 53362, 53363, 53365, 53366, 53367, 53368, 53369, 53370, 53371, 53374, 53375, 53376, 53378, 53379, 53380, 53381, 53382, 53383, 53384, 53385, 53386, 53387, 53388, 53389, 53390, 53391, 53392, 53393, 53394, 53395, 53396, 45535, 45544, 45545, 45548, 45552, 45561, 45563, 45565, 45572, 45573, 45576, 45579, 45580, 45588, 45589, 45591, 45593, 45600, 45620, 45628, 45656, 45660, 45664, 45672, 45673, 45684, 45685, 45692, 45700, 45701, 45705, 45712, 45713, 45716, 45720, 45721, 45722, 45728, 45729, 45731, 45733, 45734, 45738, 45740, 45744, 45748, 45768, 45769, 45772, 45776, 45778, 45784, 45785, 45787, 45789, 45794, 45796, 45797, 45798, 45800, 45803, 45804, 45805, 45806, 45807, 45811, 45812, 45813, 45815, 45816, 45817, 45818, 45819, 45823, 45824, 45825, 45828, 45832, 45840, 45841, 45843, 45844, 45845, 45852, 45908, 45909, 45910, 45912, 45915, 45916, 45918, 45919, 45924, 45925, 53397, 53398, 53399, 53400, 53401, 53402, 53403, 53404, 53405, 53406, 53407, 53408, 53409, 53410, 53411, 53414, 53415, 53417, 53418, 53419, 53421, 53422, 53423, 53424, 53425, 53426, null, null, null, null, null, null, 53427, 53430, 53432, 53434, 53435, 53436, 53437, 53438, 53439, 53442, 53443, 53445, 53446, 53447, 53450, 53451, 53452, 53453, 53454, 53455, 53458, 53462, 53463, 53464, 53465, 53466, null, null, null, null, null, null, 53467, 53470, 53471, 53473, 53474, 53475, 53477, 53478, 53479, 53480, 53481, 53482, 53483, 53486, 53490, 53491, 53492, 53493, 53494, 53495, 53497, 53498, 53499, 53500, 53501, 53502, 53503, 53504, 53505, 53506, 53507, 53508, 45927, 45929, 45931, 45934, 45936, 45937, 45940, 45944, 45952, 45953, 45955, 45956, 45957, 45964, 45968, 45972, 45984, 45985, 45992, 45996, 46020, 46021, 46024, 46027, 46028, 46030, 46032, 46036, 46037, 46039, 46041, 46043, 46045, 46048, 46052, 46056, 46076, 46096, 46104, 46108, 46112, 46120, 46121, 46123, 46132, 46160, 46161, 46164, 46168, 46176, 46177, 46179, 46181, 46188, 46208, 46216, 46237, 46244, 46248, 46252, 46261, 46263, 46265, 46272, 46276, 46280, 46288, 46293, 46300, 46301, 46304, 46307, 46308, 46310, 46316, 46317, 46319, 46321, 46328, 46356, 46357, 46360, 46363, 46364, 46372, 46373, 46375, 46376, 46377, 46378, 46384, 46385, 46388, 46392, 53509, 53510, 53511, 53512, 53513, 53514, 53515, 53516, 53518, 53519, 53520, 53521, 53522, 53523, 53524, 53525, 53526, 53527, 53528, 53529, 53530, 53531, 53532, 53533, 53534, 53535, null, null, null, null, null, null, 53536, 53537, 53538, 53539, 53540, 53541, 53542, 53543, 53544, 53545, 53546, 53547, 53548, 53549, 53550, 53551, 53554, 53555, 53557, 53558, 53559, 53561, 53563, 53564, 53565, 53566, null, null, null, null, null, null, 53567, 53570, 53574, 53575, 53576, 53577, 53578, 53579, 53582, 53583, 53585, 53586, 53587, 53589, 53590, 53591, 53592, 53593, 53594, 53595, 53598, 53600, 53602, 53603, 53604, 53605, 53606, 53607, 53609, 53610, 53611, 53613, 46400, 46401, 46403, 46404, 46405, 46411, 46412, 46413, 46416, 46420, 46428, 46429, 46431, 46432, 46433, 46496, 46497, 46500, 46504, 46506, 46507, 46512, 46513, 46515, 46516, 46517, 46523, 46524, 46525, 46528, 46532, 46540, 46541, 46543, 46544, 46545, 46552, 46572, 46608, 46609, 46612, 46616, 46629, 46636, 46644, 46664, 46692, 46696, 46748, 46749, 46752, 46756, 46763, 46764, 46769, 46804, 46832, 46836, 46840, 46848, 46849, 46853, 46888, 46889, 46892, 46895, 46896, 46904, 46905, 46907, 46916, 46920, 46924, 46932, 46933, 46944, 46948, 46952, 46960, 46961, 46963, 46965, 46972, 46973, 46976, 46980, 46988, 46989, 46991, 46992, 46993, 46994, 46998, 46999, 53614, 53615, 53616, 53617, 53618, 53619, 53620, 53621, 53622, 53623, 53624, 53625, 53626, 53627, 53629, 53630, 53631, 53632, 53633, 53634, 53635, 53637, 53638, 53639, 53641, 53642, null, null, null, null, null, null, 53643, 53644, 53645, 53646, 53647, 53648, 53649, 53650, 53651, 53652, 53653, 53654, 53655, 53656, 53657, 53658, 53659, 53660, 53661, 53662, 53663, 53666, 53667, 53669, 53670, 53671, null, null, null, null, null, null, 53673, 53674, 53675, 53676, 53677, 53678, 53679, 53682, 53684, 53686, 53687, 53688, 53689, 53691, 53693, 53694, 53695, 53697, 53698, 53699, 53700, 53701, 53702, 53703, 53704, 53705, 53706, 53707, 53708, 53709, 53710, 53711, 47e3, 47001, 47004, 47008, 47016, 47017, 47019, 47020, 47021, 47028, 47029, 47032, 47047, 47049, 47084, 47085, 47088, 47092, 47100, 47101, 47103, 47104, 47105, 47111, 47112, 47113, 47116, 47120, 47128, 47129, 47131, 47133, 47140, 47141, 47144, 47148, 47156, 47157, 47159, 47160, 47161, 47168, 47172, 47185, 47187, 47196, 47197, 47200, 47204, 47212, 47213, 47215, 47217, 47224, 47228, 47245, 47272, 47280, 47284, 47288, 47296, 47297, 47299, 47301, 47308, 47312, 47316, 47325, 47327, 47329, 47336, 47337, 47340, 47344, 47352, 47353, 47355, 47357, 47364, 47384, 47392, 47420, 47421, 47424, 47428, 47436, 47439, 47441, 47448, 47449, 47452, 47456, 47464, 47465, 53712, 53713, 53714, 53715, 53716, 53717, 53718, 53719, 53721, 53722, 53723, 53724, 53725, 53726, 53727, 53728, 53729, 53730, 53731, 53732, 53733, 53734, 53735, 53736, 53737, 53738, null, null, null, null, null, null, 53739, 53740, 53741, 53742, 53743, 53744, 53745, 53746, 53747, 53749, 53750, 53751, 53753, 53754, 53755, 53756, 53757, 53758, 53759, 53760, 53761, 53762, 53763, 53764, 53765, 53766, null, null, null, null, null, null, 53768, 53770, 53771, 53772, 53773, 53774, 53775, 53777, 53778, 53779, 53780, 53781, 53782, 53783, 53784, 53785, 53786, 53787, 53788, 53789, 53790, 53791, 53792, 53793, 53794, 53795, 53796, 53797, 53798, 53799, 53800, 53801, 47467, 47469, 47476, 47477, 47480, 47484, 47492, 47493, 47495, 47497, 47498, 47501, 47502, 47532, 47533, 47536, 47540, 47548, 47549, 47551, 47553, 47560, 47561, 47564, 47566, 47567, 47568, 47569, 47570, 47576, 47577, 47579, 47581, 47582, 47585, 47587, 47588, 47589, 47592, 47596, 47604, 47605, 47607, 47608, 47609, 47610, 47616, 47617, 47624, 47637, 47672, 47673, 47676, 47680, 47682, 47688, 47689, 47691, 47693, 47694, 47699, 47700, 47701, 47704, 47708, 47716, 47717, 47719, 47720, 47721, 47728, 47729, 47732, 47736, 47747, 47748, 47749, 47751, 47756, 47784, 47785, 47787, 47788, 47792, 47794, 47800, 47801, 47803, 47805, 47812, 47816, 47832, 47833, 47868, 53802, 53803, 53806, 53807, 53809, 53810, 53811, 53813, 53814, 53815, 53816, 53817, 53818, 53819, 53822, 53824, 53826, 53827, 53828, 53829, 53830, 53831, 53833, 53834, 53835, 53836, null, null, null, null, null, null, 53837, 53838, 53839, 53840, 53841, 53842, 53843, 53844, 53845, 53846, 53847, 53848, 53849, 53850, 53851, 53853, 53854, 53855, 53856, 53857, 53858, 53859, 53861, 53862, 53863, 53864, null, null, null, null, null, null, 53865, 53866, 53867, 53868, 53869, 53870, 53871, 53872, 53873, 53874, 53875, 53876, 53877, 53878, 53879, 53880, 53881, 53882, 53883, 53884, 53885, 53886, 53887, 53890, 53891, 53893, 53894, 53895, 53897, 53898, 53899, 53900, 47872, 47876, 47885, 47887, 47889, 47896, 47900, 47904, 47913, 47915, 47924, 47925, 47926, 47928, 47931, 47932, 47933, 47934, 47940, 47941, 47943, 47945, 47949, 47951, 47952, 47956, 47960, 47969, 47971, 47980, 48008, 48012, 48016, 48036, 48040, 48044, 48052, 48055, 48064, 48068, 48072, 48080, 48083, 48120, 48121, 48124, 48127, 48128, 48130, 48136, 48137, 48139, 48140, 48141, 48143, 48145, 48148, 48149, 48150, 48151, 48152, 48155, 48156, 48157, 48158, 48159, 48164, 48165, 48167, 48169, 48173, 48176, 48177, 48180, 48184, 48192, 48193, 48195, 48196, 48197, 48201, 48204, 48205, 48208, 48221, 48260, 48261, 48264, 48267, 48268, 48270, 48276, 48277, 48279, 53901, 53902, 53903, 53906, 53907, 53908, 53910, 53911, 53912, 53913, 53914, 53915, 53917, 53918, 53919, 53921, 53922, 53923, 53925, 53926, 53927, 53928, 53929, 53930, 53931, 53933, null, null, null, null, null, null, 53934, 53935, 53936, 53938, 53939, 53940, 53941, 53942, 53943, 53946, 53947, 53949, 53950, 53953, 53955, 53956, 53957, 53958, 53959, 53962, 53964, 53965, 53966, 53967, 53968, 53969, null, null, null, null, null, null, 53970, 53971, 53973, 53974, 53975, 53977, 53978, 53979, 53981, 53982, 53983, 53984, 53985, 53986, 53987, 53990, 53991, 53992, 53993, 53994, 53995, 53996, 53997, 53998, 53999, 54002, 54003, 54005, 54006, 54007, 54009, 54010, 48281, 48282, 48288, 48289, 48292, 48295, 48296, 48304, 48305, 48307, 48308, 48309, 48316, 48317, 48320, 48324, 48333, 48335, 48336, 48337, 48341, 48344, 48348, 48372, 48373, 48374, 48376, 48380, 48388, 48389, 48391, 48393, 48400, 48404, 48420, 48428, 48448, 48456, 48457, 48460, 48464, 48472, 48473, 48484, 48488, 48512, 48513, 48516, 48519, 48520, 48521, 48522, 48528, 48529, 48531, 48533, 48537, 48538, 48540, 48548, 48560, 48568, 48596, 48597, 48600, 48604, 48617, 48624, 48628, 48632, 48640, 48643, 48645, 48652, 48653, 48656, 48660, 48668, 48669, 48671, 48708, 48709, 48712, 48716, 48718, 48724, 48725, 48727, 48729, 48730, 48731, 48736, 48737, 48740, 54011, 54012, 54013, 54014, 54015, 54018, 54020, 54022, 54023, 54024, 54025, 54026, 54027, 54031, 54033, 54034, 54035, 54037, 54039, 54040, 54041, 54042, 54043, 54046, 54050, 54051, null, null, null, null, null, null, 54052, 54054, 54055, 54058, 54059, 54061, 54062, 54063, 54065, 54066, 54067, 54068, 54069, 54070, 54071, 54074, 54078, 54079, 54080, 54081, 54082, 54083, 54086, 54087, 54088, 54089, null, null, null, null, null, null, 54090, 54091, 54092, 54093, 54094, 54095, 54096, 54097, 54098, 54099, 54100, 54101, 54102, 54103, 54104, 54105, 54106, 54107, 54108, 54109, 54110, 54111, 54112, 54113, 54114, 54115, 54116, 54117, 54118, 54119, 54120, 54121, 48744, 48746, 48752, 48753, 48755, 48756, 48757, 48763, 48764, 48765, 48768, 48772, 48780, 48781, 48783, 48784, 48785, 48792, 48793, 48808, 48848, 48849, 48852, 48855, 48856, 48864, 48867, 48868, 48869, 48876, 48897, 48904, 48905, 48920, 48921, 48923, 48924, 48925, 48960, 48961, 48964, 48968, 48976, 48977, 48981, 49044, 49072, 49093, 49100, 49101, 49104, 49108, 49116, 49119, 49121, 49212, 49233, 49240, 49244, 49248, 49256, 49257, 49296, 49297, 49300, 49304, 49312, 49313, 49315, 49317, 49324, 49325, 49327, 49328, 49331, 49332, 49333, 49334, 49340, 49341, 49343, 49344, 49345, 49349, 49352, 49353, 49356, 49360, 49368, 49369, 49371, 49372, 49373, 49380, 54122, 54123, 54124, 54125, 54126, 54127, 54128, 54129, 54130, 54131, 54132, 54133, 54134, 54135, 54136, 54137, 54138, 54139, 54142, 54143, 54145, 54146, 54147, 54149, 54150, 54151, null, null, null, null, null, null, 54152, 54153, 54154, 54155, 54158, 54162, 54163, 54164, 54165, 54166, 54167, 54170, 54171, 54173, 54174, 54175, 54177, 54178, 54179, 54180, 54181, 54182, 54183, 54186, 54188, 54190, null, null, null, null, null, null, 54191, 54192, 54193, 54194, 54195, 54197, 54198, 54199, 54201, 54202, 54203, 54205, 54206, 54207, 54208, 54209, 54210, 54211, 54214, 54215, 54218, 54219, 54220, 54221, 54222, 54223, 54225, 54226, 54227, 54228, 54229, 54230, 49381, 49384, 49388, 49396, 49397, 49399, 49401, 49408, 49412, 49416, 49424, 49429, 49436, 49437, 49438, 49439, 49440, 49443, 49444, 49446, 49447, 49452, 49453, 49455, 49456, 49457, 49462, 49464, 49465, 49468, 49472, 49480, 49481, 49483, 49484, 49485, 49492, 49493, 49496, 49500, 49508, 49509, 49511, 49512, 49513, 49520, 49524, 49528, 49541, 49548, 49549, 49550, 49552, 49556, 49558, 49564, 49565, 49567, 49569, 49573, 49576, 49577, 49580, 49584, 49597, 49604, 49608, 49612, 49620, 49623, 49624, 49632, 49636, 49640, 49648, 49649, 49651, 49660, 49661, 49664, 49668, 49676, 49677, 49679, 49681, 49688, 49689, 49692, 49695, 49696, 49704, 49705, 49707, 49709, 54231, 54233, 54234, 54235, 54236, 54237, 54238, 54239, 54240, 54242, 54244, 54245, 54246, 54247, 54248, 54249, 54250, 54251, 54254, 54255, 54257, 54258, 54259, 54261, 54262, 54263, null, null, null, null, null, null, 54264, 54265, 54266, 54267, 54270, 54272, 54274, 54275, 54276, 54277, 54278, 54279, 54281, 54282, 54283, 54284, 54285, 54286, 54287, 54288, 54289, 54290, 54291, 54292, 54293, 54294, null, null, null, null, null, null, 54295, 54296, 54297, 54298, 54299, 54300, 54302, 54303, 54304, 54305, 54306, 54307, 54308, 54309, 54310, 54311, 54312, 54313, 54314, 54315, 54316, 54317, 54318, 54319, 54320, 54321, 54322, 54323, 54324, 54325, 54326, 54327, 49711, 49713, 49714, 49716, 49736, 49744, 49745, 49748, 49752, 49760, 49765, 49772, 49773, 49776, 49780, 49788, 49789, 49791, 49793, 49800, 49801, 49808, 49816, 49819, 49821, 49828, 49829, 49832, 49836, 49837, 49844, 49845, 49847, 49849, 49884, 49885, 49888, 49891, 49892, 49899, 49900, 49901, 49903, 49905, 49910, 49912, 49913, 49915, 49916, 49920, 49928, 49929, 49932, 49933, 49939, 49940, 49941, 49944, 49948, 49956, 49957, 49960, 49961, 49989, 50024, 50025, 50028, 50032, 50034, 50040, 50041, 50044, 50045, 50052, 50056, 50060, 50112, 50136, 50137, 50140, 50143, 50144, 50146, 50152, 50153, 50157, 50164, 50165, 50168, 50184, 50192, 50212, 50220, 50224, 54328, 54329, 54330, 54331, 54332, 54333, 54334, 54335, 54337, 54338, 54339, 54341, 54342, 54343, 54344, 54345, 54346, 54347, 54348, 54349, 54350, 54351, 54352, 54353, 54354, 54355, null, null, null, null, null, null, 54356, 54357, 54358, 54359, 54360, 54361, 54362, 54363, 54365, 54366, 54367, 54369, 54370, 54371, 54373, 54374, 54375, 54376, 54377, 54378, 54379, 54380, 54382, 54384, 54385, 54386, null, null, null, null, null, null, 54387, 54388, 54389, 54390, 54391, 54394, 54395, 54397, 54398, 54401, 54403, 54404, 54405, 54406, 54407, 54410, 54412, 54414, 54415, 54416, 54417, 54418, 54419, 54421, 54422, 54423, 54424, 54425, 54426, 54427, 54428, 54429, 50228, 50236, 50237, 50248, 50276, 50277, 50280, 50284, 50292, 50293, 50297, 50304, 50324, 50332, 50360, 50364, 50409, 50416, 50417, 50420, 50424, 50426, 50431, 50432, 50433, 50444, 50448, 50452, 50460, 50472, 50473, 50476, 50480, 50488, 50489, 50491, 50493, 50500, 50501, 50504, 50505, 50506, 50508, 50509, 50510, 50515, 50516, 50517, 50519, 50520, 50521, 50525, 50526, 50528, 50529, 50532, 50536, 50544, 50545, 50547, 50548, 50549, 50556, 50557, 50560, 50564, 50567, 50572, 50573, 50575, 50577, 50581, 50583, 50584, 50588, 50592, 50601, 50612, 50613, 50616, 50617, 50619, 50620, 50621, 50622, 50628, 50629, 50630, 50631, 50632, 50633, 50634, 50636, 50638, 54430, 54431, 54432, 54433, 54434, 54435, 54436, 54437, 54438, 54439, 54440, 54442, 54443, 54444, 54445, 54446, 54447, 54448, 54449, 54450, 54451, 54452, 54453, 54454, 54455, 54456, null, null, null, null, null, null, 54457, 54458, 54459, 54460, 54461, 54462, 54463, 54464, 54465, 54466, 54467, 54468, 54469, 54470, 54471, 54472, 54473, 54474, 54475, 54477, 54478, 54479, 54481, 54482, 54483, 54485, null, null, null, null, null, null, 54486, 54487, 54488, 54489, 54490, 54491, 54493, 54494, 54496, 54497, 54498, 54499, 54500, 54501, 54502, 54503, 54505, 54506, 54507, 54509, 54510, 54511, 54513, 54514, 54515, 54516, 54517, 54518, 54519, 54521, 54522, 54524, 50640, 50641, 50644, 50648, 50656, 50657, 50659, 50661, 50668, 50669, 50670, 50672, 50676, 50678, 50679, 50684, 50685, 50686, 50687, 50688, 50689, 50693, 50694, 50695, 50696, 50700, 50704, 50712, 50713, 50715, 50716, 50724, 50725, 50728, 50732, 50733, 50734, 50736, 50739, 50740, 50741, 50743, 50745, 50747, 50752, 50753, 50756, 50760, 50768, 50769, 50771, 50772, 50773, 50780, 50781, 50784, 50796, 50799, 50801, 50808, 50809, 50812, 50816, 50824, 50825, 50827, 50829, 50836, 50837, 50840, 50844, 50852, 50853, 50855, 50857, 50864, 50865, 50868, 50872, 50873, 50874, 50880, 50881, 50883, 50885, 50892, 50893, 50896, 50900, 50908, 50909, 50912, 50913, 50920, 54526, 54527, 54528, 54529, 54530, 54531, 54533, 54534, 54535, 54537, 54538, 54539, 54541, 54542, 54543, 54544, 54545, 54546, 54547, 54550, 54552, 54553, 54554, 54555, 54556, 54557, null, null, null, null, null, null, 54558, 54559, 54560, 54561, 54562, 54563, 54564, 54565, 54566, 54567, 54568, 54569, 54570, 54571, 54572, 54573, 54574, 54575, 54576, 54577, 54578, 54579, 54580, 54581, 54582, 54583, null, null, null, null, null, null, 54584, 54585, 54586, 54587, 54590, 54591, 54593, 54594, 54595, 54597, 54598, 54599, 54600, 54601, 54602, 54603, 54606, 54608, 54610, 54611, 54612, 54613, 54614, 54615, 54618, 54619, 54621, 54622, 54623, 54625, 54626, 54627, 50921, 50924, 50928, 50936, 50937, 50941, 50948, 50949, 50952, 50956, 50964, 50965, 50967, 50969, 50976, 50977, 50980, 50984, 50992, 50993, 50995, 50997, 50999, 51004, 51005, 51008, 51012, 51018, 51020, 51021, 51023, 51025, 51026, 51027, 51028, 51029, 51030, 51031, 51032, 51036, 51040, 51048, 51051, 51060, 51061, 51064, 51068, 51069, 51070, 51075, 51076, 51077, 51079, 51080, 51081, 51082, 51086, 51088, 51089, 51092, 51094, 51095, 51096, 51098, 51104, 51105, 51107, 51108, 51109, 51110, 51116, 51117, 51120, 51124, 51132, 51133, 51135, 51136, 51137, 51144, 51145, 51148, 51150, 51152, 51160, 51165, 51172, 51176, 51180, 51200, 51201, 51204, 51208, 51210, 54628, 54630, 54631, 54634, 54636, 54638, 54639, 54640, 54641, 54642, 54643, 54646, 54647, 54649, 54650, 54651, 54653, 54654, 54655, 54656, 54657, 54658, 54659, 54662, 54666, 54667, null, null, null, null, null, null, 54668, 54669, 54670, 54671, 54673, 54674, 54675, 54676, 54677, 54678, 54679, 54680, 54681, 54682, 54683, 54684, 54685, 54686, 54687, 54688, 54689, 54690, 54691, 54692, 54694, 54695, null, null, null, null, null, null, 54696, 54697, 54698, 54699, 54700, 54701, 54702, 54703, 54704, 54705, 54706, 54707, 54708, 54709, 54710, 54711, 54712, 54713, 54714, 54715, 54716, 54717, 54718, 54719, 54720, 54721, 54722, 54723, 54724, 54725, 54726, 54727, 51216, 51217, 51219, 51221, 51222, 51228, 51229, 51232, 51236, 51244, 51245, 51247, 51249, 51256, 51260, 51264, 51272, 51273, 51276, 51277, 51284, 51312, 51313, 51316, 51320, 51322, 51328, 51329, 51331, 51333, 51334, 51335, 51339, 51340, 51341, 51348, 51357, 51359, 51361, 51368, 51388, 51389, 51396, 51400, 51404, 51412, 51413, 51415, 51417, 51424, 51425, 51428, 51445, 51452, 51453, 51456, 51460, 51461, 51462, 51468, 51469, 51471, 51473, 51480, 51500, 51508, 51536, 51537, 51540, 51544, 51552, 51553, 51555, 51564, 51568, 51572, 51580, 51592, 51593, 51596, 51600, 51608, 51609, 51611, 51613, 51648, 51649, 51652, 51655, 51656, 51658, 51664, 51665, 51667, 54730, 54731, 54733, 54734, 54735, 54737, 54739, 54740, 54741, 54742, 54743, 54746, 54748, 54750, 54751, 54752, 54753, 54754, 54755, 54758, 54759, 54761, 54762, 54763, 54765, 54766, null, null, null, null, null, null, 54767, 54768, 54769, 54770, 54771, 54774, 54776, 54778, 54779, 54780, 54781, 54782, 54783, 54786, 54787, 54789, 54790, 54791, 54793, 54794, 54795, 54796, 54797, 54798, 54799, 54802, null, null, null, null, null, null, 54806, 54807, 54808, 54809, 54810, 54811, 54813, 54814, 54815, 54817, 54818, 54819, 54821, 54822, 54823, 54824, 54825, 54826, 54827, 54828, 54830, 54831, 54832, 54833, 54834, 54835, 54836, 54837, 54838, 54839, 54842, 54843, 51669, 51670, 51673, 51674, 51676, 51677, 51680, 51682, 51684, 51687, 51692, 51693, 51695, 51696, 51697, 51704, 51705, 51708, 51712, 51720, 51721, 51723, 51724, 51725, 51732, 51736, 51753, 51788, 51789, 51792, 51796, 51804, 51805, 51807, 51808, 51809, 51816, 51837, 51844, 51864, 51900, 51901, 51904, 51908, 51916, 51917, 51919, 51921, 51923, 51928, 51929, 51936, 51948, 51956, 51976, 51984, 51988, 51992, 52e3, 52001, 52033, 52040, 52041, 52044, 52048, 52056, 52057, 52061, 52068, 52088, 52089, 52124, 52152, 52180, 52196, 52199, 52201, 52236, 52237, 52240, 52244, 52252, 52253, 52257, 52258, 52263, 52264, 52265, 52268, 52270, 52272, 52280, 52281, 52283, 54845, 54846, 54847, 54849, 54850, 54851, 54852, 54854, 54855, 54858, 54860, 54862, 54863, 54864, 54866, 54867, 54870, 54871, 54873, 54874, 54875, 54877, 54878, 54879, 54880, 54881, null, null, null, null, null, null, 54882, 54883, 54884, 54885, 54886, 54888, 54890, 54891, 54892, 54893, 54894, 54895, 54898, 54899, 54901, 54902, 54903, 54904, 54905, 54906, 54907, 54908, 54909, 54910, 54911, 54912, null, null, null, null, null, null, 54913, 54914, 54916, 54918, 54919, 54920, 54921, 54922, 54923, 54926, 54927, 54929, 54930, 54931, 54933, 54934, 54935, 54936, 54937, 54938, 54939, 54940, 54942, 54944, 54946, 54947, 54948, 54949, 54950, 54951, 54953, 54954, 52284, 52285, 52286, 52292, 52293, 52296, 52300, 52308, 52309, 52311, 52312, 52313, 52320, 52324, 52326, 52328, 52336, 52341, 52376, 52377, 52380, 52384, 52392, 52393, 52395, 52396, 52397, 52404, 52405, 52408, 52412, 52420, 52421, 52423, 52425, 52432, 52436, 52452, 52460, 52464, 52481, 52488, 52489, 52492, 52496, 52504, 52505, 52507, 52509, 52516, 52520, 52524, 52537, 52572, 52576, 52580, 52588, 52589, 52591, 52593, 52600, 52616, 52628, 52629, 52632, 52636, 52644, 52645, 52647, 52649, 52656, 52676, 52684, 52688, 52712, 52716, 52720, 52728, 52729, 52731, 52733, 52740, 52744, 52748, 52756, 52761, 52768, 52769, 52772, 52776, 52784, 52785, 52787, 52789, 54955, 54957, 54958, 54959, 54961, 54962, 54963, 54964, 54965, 54966, 54967, 54968, 54970, 54972, 54973, 54974, 54975, 54976, 54977, 54978, 54979, 54982, 54983, 54985, 54986, 54987, null, null, null, null, null, null, 54989, 54990, 54991, 54992, 54994, 54995, 54997, 54998, 55e3, 55002, 55003, 55004, 55005, 55006, 55007, 55009, 55010, 55011, 55013, 55014, 55015, 55017, 55018, 55019, 55020, 55021, null, null, null, null, null, null, 55022, 55023, 55025, 55026, 55027, 55028, 55030, 55031, 55032, 55033, 55034, 55035, 55038, 55039, 55041, 55042, 55043, 55045, 55046, 55047, 55048, 55049, 55050, 55051, 55052, 55053, 55054, 55055, 55056, 55058, 55059, 55060, 52824, 52825, 52828, 52831, 52832, 52833, 52840, 52841, 52843, 52845, 52852, 52853, 52856, 52860, 52868, 52869, 52871, 52873, 52880, 52881, 52884, 52888, 52896, 52897, 52899, 52900, 52901, 52908, 52909, 52929, 52964, 52965, 52968, 52971, 52972, 52980, 52981, 52983, 52984, 52985, 52992, 52993, 52996, 53e3, 53008, 53009, 53011, 53013, 53020, 53024, 53028, 53036, 53037, 53039, 53040, 53041, 53048, 53076, 53077, 53080, 53084, 53092, 53093, 53095, 53097, 53104, 53105, 53108, 53112, 53120, 53125, 53132, 53153, 53160, 53168, 53188, 53216, 53217, 53220, 53224, 53232, 53233, 53235, 53237, 53244, 53248, 53252, 53265, 53272, 53293, 53300, 53301, 53304, 53308, 55061, 55062, 55063, 55066, 55067, 55069, 55070, 55071, 55073, 55074, 55075, 55076, 55077, 55078, 55079, 55082, 55084, 55086, 55087, 55088, 55089, 55090, 55091, 55094, 55095, 55097, null, null, null, null, null, null, 55098, 55099, 55101, 55102, 55103, 55104, 55105, 55106, 55107, 55109, 55110, 55112, 55114, 55115, 55116, 55117, 55118, 55119, 55122, 55123, 55125, 55130, 55131, 55132, 55133, 55134, null, null, null, null, null, null, 55135, 55138, 55140, 55142, 55143, 55144, 55146, 55147, 55149, 55150, 55151, 55153, 55154, 55155, 55157, 55158, 55159, 55160, 55161, 55162, 55163, 55166, 55167, 55168, 55170, 55171, 55172, 55173, 55174, 55175, 55178, 55179, 53316, 53317, 53319, 53321, 53328, 53332, 53336, 53344, 53356, 53357, 53360, 53364, 53372, 53373, 53377, 53412, 53413, 53416, 53420, 53428, 53429, 53431, 53433, 53440, 53441, 53444, 53448, 53449, 53456, 53457, 53459, 53460, 53461, 53468, 53469, 53472, 53476, 53484, 53485, 53487, 53488, 53489, 53496, 53517, 53552, 53553, 53556, 53560, 53562, 53568, 53569, 53571, 53572, 53573, 53580, 53581, 53584, 53588, 53596, 53597, 53599, 53601, 53608, 53612, 53628, 53636, 53640, 53664, 53665, 53668, 53672, 53680, 53681, 53683, 53685, 53690, 53692, 53696, 53720, 53748, 53752, 53767, 53769, 53776, 53804, 53805, 53808, 53812, 53820, 53821, 53823, 53825, 53832, 53852, 55181, 55182, 55183, 55185, 55186, 55187, 55188, 55189, 55190, 55191, 55194, 55196, 55198, 55199, 55200, 55201, 55202, 55203, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 53860, 53888, 53889, 53892, 53896, 53904, 53905, 53909, 53916, 53920, 53924, 53932, 53937, 53944, 53945, 53948, 53951, 53952, 53954, 53960, 53961, 53963, 53972, 53976, 53980, 53988, 53989, 54e3, 54001, 54004, 54008, 54016, 54017, 54019, 54021, 54028, 54029, 54030, 54032, 54036, 54038, 54044, 54045, 54047, 54048, 54049, 54053, 54056, 54057, 54060, 54064, 54072, 54073, 54075, 54076, 54077, 54084, 54085, 54140, 54141, 54144, 54148, 54156, 54157, 54159, 54160, 54161, 54168, 54169, 54172, 54176, 54184, 54185, 54187, 54189, 54196, 54200, 54204, 54212, 54213, 54216, 54217, 54224, 54232, 54241, 54243, 54252, 54253, 54256, 54260, 54268, 54269, 54271, 54273, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 54280, 54301, 54336, 54340, 54364, 54368, 54372, 54381, 54383, 54392, 54393, 54396, 54399, 54400, 54402, 54408, 54409, 54411, 54413, 54420, 54441, 54476, 54480, 54484, 54492, 54495, 54504, 54508, 54512, 54520, 54523, 54525, 54532, 54536, 54540, 54548, 54549, 54551, 54588, 54589, 54592, 54596, 54604, 54605, 54607, 54609, 54616, 54617, 54620, 54624, 54629, 54632, 54633, 54635, 54637, 54644, 54645, 54648, 54652, 54660, 54661, 54663, 54664, 54665, 54672, 54693, 54728, 54729, 54732, 54736, 54738, 54744, 54745, 54747, 54749, 54756, 54757, 54760, 54764, 54772, 54773, 54775, 54777, 54784, 54785, 54788, 54792, 54800, 54801, 54803, 54804, 54805, 54812, 54816, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 54820, 54829, 54840, 54841, 54844, 54848, 54853, 54856, 54857, 54859, 54861, 54865, 54868, 54869, 54872, 54876, 54887, 54889, 54896, 54897, 54900, 54915, 54917, 54924, 54925, 54928, 54932, 54941, 54943, 54945, 54952, 54956, 54960, 54969, 54971, 54980, 54981, 54984, 54988, 54993, 54996, 54999, 55001, 55008, 55012, 55016, 55024, 55029, 55036, 55037, 55040, 55044, 55057, 55064, 55065, 55068, 55072, 55080, 55081, 55083, 55085, 55092, 55093, 55096, 55100, 55108, 55111, 55113, 55120, 55121, 55124, 55126, 55127, 55128, 55129, 55136, 55137, 55139, 55141, 55145, 55148, 55152, 55156, 55164, 55165, 55169, 55176, 55177, 55180, 55184, 55192, 55193, 55195, 55197, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 20285, 20339, 20551, 20729, 21152, 21487, 21621, 21733, 22025, 23233, 23478, 26247, 26550, 26551, 26607, 27468, 29634, 30146, 31292, 33499, 33540, 34903, 34952, 35382, 36040, 36303, 36603, 36838, 39381, 21051, 21364, 21508, 24682, 24932, 27580, 29647, 33050, 35258, 35282, 38307, 20355, 21002, 22718, 22904, 23014, 24178, 24185, 25031, 25536, 26438, 26604, 26751, 28567, 30286, 30475, 30965, 31240, 31487, 31777, 32925, 33390, 33393, 35563, 38291, 20075, 21917, 26359, 28212, 30883, 31469, 33883, 35088, 34638, 38824, 21208, 22350, 22570, 23884, 24863, 25022, 25121, 25954, 26577, 27204, 28187, 29976, 30131, 30435, 30640, 32058, 37039, 37969, 37970, 40853, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 21283, 23724, 30002, 32987, 37440, 38296, 21083, 22536, 23004, 23713, 23831, 24247, 24378, 24394, 24951, 27743, 30074, 30086, 31968, 32115, 32177, 32652, 33108, 33313, 34193, 35137, 35611, 37628, 38477, 40007, 20171, 20215, 20491, 20977, 22607, 24887, 24894, 24936, 25913, 27114, 28433, 30117, 30342, 30422, 31623, 33445, 33995, 63744, 37799, 38283, 21888, 23458, 22353, 63745, 31923, 32697, 37301, 20520, 21435, 23621, 24040, 25298, 25454, 25818, 25831, 28192, 28844, 31067, 36317, 36382, 63746, 36989, 37445, 37624, 20094, 20214, 20581, 24062, 24314, 24838, 26967, 33137, 34388, 36423, 37749, 39467, 20062, 20625, 26480, 26688, 20745, 21133, 21138, 27298, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 30652, 37392, 40660, 21163, 24623, 36850, 20552, 25001, 25581, 25802, 26684, 27268, 28608, 33160, 35233, 38548, 22533, 29309, 29356, 29956, 32121, 32365, 32937, 35211, 35700, 36963, 40273, 25225, 27770, 28500, 32080, 32570, 35363, 20860, 24906, 31645, 35609, 37463, 37772, 20140, 20435, 20510, 20670, 20742, 21185, 21197, 21375, 22384, 22659, 24218, 24465, 24950, 25004, 25806, 25964, 26223, 26299, 26356, 26775, 28039, 28805, 28913, 29855, 29861, 29898, 30169, 30828, 30956, 31455, 31478, 32069, 32147, 32789, 32831, 33051, 33686, 35686, 36629, 36885, 37857, 38915, 38968, 39514, 39912, 20418, 21843, 22586, 22865, 23395, 23622, 24760, 25106, 26690, 26800, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 26856, 28330, 30028, 30328, 30926, 31293, 31995, 32363, 32380, 35336, 35489, 35903, 38542, 40388, 21476, 21481, 21578, 21617, 22266, 22993, 23396, 23611, 24235, 25335, 25911, 25925, 25970, 26272, 26543, 27073, 27837, 30204, 30352, 30590, 31295, 32660, 32771, 32929, 33167, 33510, 33533, 33776, 34241, 34865, 34996, 35493, 63747, 36764, 37678, 38599, 39015, 39640, 40723, 21741, 26011, 26354, 26767, 31296, 35895, 40288, 22256, 22372, 23825, 26118, 26801, 26829, 28414, 29736, 34974, 39908, 27752, 63748, 39592, 20379, 20844, 20849, 21151, 23380, 24037, 24656, 24685, 25329, 25511, 25915, 29657, 31354, 34467, 36002, 38799, 20018, 23521, 25096, 26524, 29916, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 31185, 33747, 35463, 35506, 36328, 36942, 37707, 38982, 24275, 27112, 34303, 37101, 63749, 20896, 23448, 23532, 24931, 26874, 27454, 28748, 29743, 29912, 31649, 32592, 33733, 35264, 36011, 38364, 39208, 21038, 24669, 25324, 36866, 20362, 20809, 21281, 22745, 24291, 26336, 27960, 28826, 29378, 29654, 31568, 33009, 37979, 21350, 25499, 32619, 20054, 20608, 22602, 22750, 24618, 24871, 25296, 27088, 39745, 23439, 32024, 32945, 36703, 20132, 20689, 21676, 21932, 23308, 23968, 24039, 25898, 25934, 26657, 27211, 29409, 30350, 30703, 32094, 32761, 33184, 34126, 34527, 36611, 36686, 37066, 39171, 39509, 39851, 19992, 20037, 20061, 20167, 20465, 20855, 21246, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 21312, 21475, 21477, 21646, 22036, 22389, 22434, 23495, 23943, 24272, 25084, 25304, 25937, 26552, 26601, 27083, 27472, 27590, 27628, 27714, 28317, 28792, 29399, 29590, 29699, 30655, 30697, 31350, 32127, 32777, 33276, 33285, 33290, 33503, 34914, 35635, 36092, 36544, 36881, 37041, 37476, 37558, 39378, 39493, 40169, 40407, 40860, 22283, 23616, 33738, 38816, 38827, 40628, 21531, 31384, 32676, 35033, 36557, 37089, 22528, 23624, 25496, 31391, 23470, 24339, 31353, 31406, 33422, 36524, 20518, 21048, 21240, 21367, 22280, 25331, 25458, 27402, 28099, 30519, 21413, 29527, 34152, 36470, 38357, 26426, 27331, 28528, 35437, 36556, 39243, 63750, 26231, 27512, 36020, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 39740, 63751, 21483, 22317, 22862, 25542, 27131, 29674, 30789, 31418, 31429, 31998, 33909, 35215, 36211, 36917, 38312, 21243, 22343, 30023, 31584, 33740, 37406, 63752, 27224, 20811, 21067, 21127, 25119, 26840, 26997, 38553, 20677, 21156, 21220, 25027, 26020, 26681, 27135, 29822, 31563, 33465, 33771, 35250, 35641, 36817, 39241, 63753, 20170, 22935, 25810, 26129, 27278, 29748, 31105, 31165, 33449, 34942, 34943, 35167, 63754, 37670, 20235, 21450, 24613, 25201, 27762, 32026, 32102, 20120, 20834, 30684, 32943, 20225, 20238, 20854, 20864, 21980, 22120, 22331, 22522, 22524, 22804, 22855, 22931, 23492, 23696, 23822, 24049, 24190, 24524, 25216, 26071, 26083, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 26398, 26399, 26462, 26827, 26820, 27231, 27450, 27683, 27773, 27778, 28103, 29592, 29734, 29738, 29826, 29859, 30072, 30079, 30849, 30959, 31041, 31047, 31048, 31098, 31637, 32e3, 32186, 32648, 32774, 32813, 32908, 35352, 35663, 35912, 36215, 37665, 37668, 39138, 39249, 39438, 39439, 39525, 40594, 32202, 20342, 21513, 25326, 26708, 37329, 21931, 20794, 63755, 63756, 23068, 25062, 63757, 25295, 25343, 63758, 63759, 63760, 63761, 63762, 63763, 37027, 63764, 63765, 63766, 63767, 63768, 35582, 63769, 63770, 63771, 63772, 26262, 63773, 29014, 63774, 63775, 38627, 63776, 25423, 25466, 21335, 63777, 26511, 26976, 28275, 63778, 30007, 63779, 63780, 63781, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 32013, 63782, 63783, 34930, 22218, 23064, 63784, 63785, 63786, 63787, 63788, 20035, 63789, 20839, 22856, 26608, 32784, 63790, 22899, 24180, 25754, 31178, 24565, 24684, 25288, 25467, 23527, 23511, 21162, 63791, 22900, 24361, 24594, 63792, 63793, 63794, 29785, 63795, 63796, 63797, 63798, 63799, 63800, 39377, 63801, 63802, 63803, 63804, 63805, 63806, 63807, 63808, 63809, 63810, 63811, 28611, 63812, 63813, 33215, 36786, 24817, 63814, 63815, 33126, 63816, 63817, 23615, 63818, 63819, 63820, 63821, 63822, 63823, 63824, 63825, 23273, 35365, 26491, 32016, 63826, 63827, 63828, 63829, 63830, 63831, 33021, 63832, 63833, 23612, 27877, 21311, 28346, 22810, 33590, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 20025, 20150, 20294, 21934, 22296, 22727, 24406, 26039, 26086, 27264, 27573, 28237, 30701, 31471, 31774, 32222, 34507, 34962, 37170, 37723, 25787, 28606, 29562, 30136, 36948, 21846, 22349, 25018, 25812, 26311, 28129, 28251, 28525, 28601, 30192, 32835, 33213, 34113, 35203, 35527, 35674, 37663, 27795, 30035, 31572, 36367, 36957, 21776, 22530, 22616, 24162, 25095, 25758, 26848, 30070, 31958, 34739, 40680, 20195, 22408, 22382, 22823, 23565, 23729, 24118, 24453, 25140, 25825, 29619, 33274, 34955, 36024, 38538, 40667, 23429, 24503, 24755, 20498, 20992, 21040, 22294, 22581, 22615, 23566, 23648, 23798, 23947, 24230, 24466, 24764, 25361, 25481, 25623, 26691, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 26873, 27330, 28120, 28193, 28372, 28644, 29182, 30428, 30585, 31153, 31291, 33796, 35241, 36077, 36339, 36424, 36867, 36884, 36947, 37117, 37709, 38518, 38876, 27602, 28678, 29272, 29346, 29544, 30563, 31167, 31716, 32411, 35712, 22697, 24775, 25958, 26109, 26302, 27788, 28958, 29129, 35930, 38931, 20077, 31361, 20189, 20908, 20941, 21205, 21516, 24999, 26481, 26704, 26847, 27934, 28540, 30140, 30643, 31461, 33012, 33891, 37509, 20828, 26007, 26460, 26515, 30168, 31431, 33651, 63834, 35910, 36887, 38957, 23663, 33216, 33434, 36929, 36975, 37389, 24471, 23965, 27225, 29128, 30331, 31561, 34276, 35588, 37159, 39472, 21895, 25078, 63835, 30313, 32645, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 34367, 34746, 35064, 37007, 63836, 27931, 28889, 29662, 32097, 33853, 63837, 37226, 39409, 63838, 20098, 21365, 27396, 27410, 28734, 29211, 34349, 40478, 21068, 36771, 23888, 25829, 25900, 27414, 28651, 31811, 32412, 34253, 35172, 35261, 25289, 33240, 34847, 24266, 26391, 28010, 29436, 29701, 29807, 34690, 37086, 20358, 23821, 24480, 33802, 20919, 25504, 30053, 20142, 20486, 20841, 20937, 26753, 27153, 31918, 31921, 31975, 33391, 35538, 36635, 37327, 20406, 20791, 21237, 21570, 24300, 24942, 25150, 26053, 27354, 28670, 31018, 34268, 34851, 38317, 39522, 39530, 40599, 40654, 21147, 26310, 27511, 28701, 31019, 36706, 38722, 24976, 25088, 25891, 28451, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 29001, 29833, 32244, 32879, 34030, 36646, 36899, 37706, 20925, 21015, 21155, 27916, 28872, 35010, 24265, 25986, 27566, 28610, 31806, 29557, 20196, 20278, 22265, 63839, 23738, 23994, 24604, 29618, 31533, 32666, 32718, 32838, 36894, 37428, 38646, 38728, 38936, 40801, 20363, 28583, 31150, 37300, 38583, 21214, 63840, 25736, 25796, 27347, 28510, 28696, 29200, 30439, 32769, 34310, 34396, 36335, 36613, 38706, 39791, 40442, 40565, 30860, 31103, 32160, 33737, 37636, 40575, 40595, 35542, 22751, 24324, 26407, 28711, 29903, 31840, 32894, 20769, 28712, 29282, 30922, 36034, 36058, 36084, 38647, 20102, 20698, 23534, 24278, 26009, 29134, 30274, 30637, 32842, 34044, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 36988, 39719, 40845, 22744, 23105, 23650, 27155, 28122, 28431, 30267, 32047, 32311, 34078, 35128, 37860, 38475, 21129, 26066, 26611, 27060, 27969, 28316, 28687, 29705, 29792, 30041, 30244, 30827, 35628, 39006, 20845, 25134, 38520, 20374, 20523, 23833, 28138, 32184, 36650, 24459, 24900, 26647, 63841, 38534, 21202, 32907, 20956, 20940, 26974, 31260, 32190, 33777, 38517, 20442, 21033, 21400, 21519, 21774, 23653, 24743, 26446, 26792, 28012, 29313, 29432, 29702, 29827, 63842, 30178, 31852, 32633, 32696, 33673, 35023, 35041, 37324, 37328, 38626, 39881, 21533, 28542, 29136, 29848, 34298, 36522, 38563, 40023, 40607, 26519, 28107, 29747, 33256, 38678, 30764, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 31435, 31520, 31890, 25705, 29802, 30194, 30908, 30952, 39340, 39764, 40635, 23518, 24149, 28448, 33180, 33707, 37e3, 19975, 21325, 23081, 24018, 24398, 24930, 25405, 26217, 26364, 28415, 28459, 28771, 30622, 33836, 34067, 34875, 36627, 39237, 39995, 21788, 25273, 26411, 27819, 33545, 35178, 38778, 20129, 22916, 24536, 24537, 26395, 32178, 32596, 33426, 33579, 33725, 36638, 37017, 22475, 22969, 23186, 23504, 26151, 26522, 26757, 27599, 29028, 32629, 36023, 36067, 36993, 39749, 33032, 35978, 38476, 39488, 40613, 23391, 27667, 29467, 30450, 30431, 33804, 20906, 35219, 20813, 20885, 21193, 26825, 27796, 30468, 30496, 32191, 32236, 38754, 40629, 28357, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 34065, 20901, 21517, 21629, 26126, 26269, 26919, 28319, 30399, 30609, 33559, 33986, 34719, 37225, 37528, 40180, 34946, 20398, 20882, 21215, 22982, 24125, 24917, 25720, 25721, 26286, 26576, 27169, 27597, 27611, 29279, 29281, 29761, 30520, 30683, 32791, 33468, 33541, 35584, 35624, 35980, 26408, 27792, 29287, 30446, 30566, 31302, 40361, 27519, 27794, 22818, 26406, 33945, 21359, 22675, 22937, 24287, 25551, 26164, 26483, 28218, 29483, 31447, 33495, 37672, 21209, 24043, 25006, 25035, 25098, 25287, 25771, 26080, 26969, 27494, 27595, 28961, 29687, 30045, 32326, 33310, 33538, 34154, 35491, 36031, 38695, 40289, 22696, 40664, 20497, 21006, 21563, 21839, 25991, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 27766, 32010, 32011, 32862, 34442, 38272, 38639, 21247, 27797, 29289, 21619, 23194, 23614, 23883, 24396, 24494, 26410, 26806, 26979, 28220, 28228, 30473, 31859, 32654, 34183, 35598, 36855, 38753, 40692, 23735, 24758, 24845, 25003, 25935, 26107, 26108, 27665, 27887, 29599, 29641, 32225, 38292, 23494, 34588, 35600, 21085, 21338, 25293, 25615, 25778, 26420, 27192, 27850, 29632, 29854, 31636, 31893, 32283, 33162, 33334, 34180, 36843, 38649, 39361, 20276, 21322, 21453, 21467, 25292, 25644, 25856, 26001, 27075, 27886, 28504, 29677, 30036, 30242, 30436, 30460, 30928, 30971, 31020, 32070, 33324, 34784, 36820, 38930, 39151, 21187, 25300, 25765, 28196, 28497, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 30332, 36299, 37297, 37474, 39662, 39747, 20515, 20621, 22346, 22952, 23592, 24135, 24439, 25151, 25918, 26041, 26049, 26121, 26507, 27036, 28354, 30917, 32033, 32938, 33152, 33323, 33459, 33953, 34444, 35370, 35607, 37030, 38450, 40848, 20493, 20467, 63843, 22521, 24472, 25308, 25490, 26479, 28227, 28953, 30403, 32972, 32986, 35060, 35061, 35097, 36064, 36649, 37197, 38506, 20271, 20336, 24091, 26575, 26658, 30333, 30334, 39748, 24161, 27146, 29033, 29140, 30058, 63844, 32321, 34115, 34281, 39132, 20240, 31567, 32624, 38309, 20961, 24070, 26805, 27710, 27726, 27867, 29359, 31684, 33539, 27861, 29754, 20731, 21128, 22721, 25816, 27287, 29863, 30294, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 30887, 34327, 38370, 38713, 63845, 21342, 24321, 35722, 36776, 36783, 37002, 21029, 30629, 40009, 40712, 19993, 20482, 20853, 23643, 24183, 26142, 26170, 26564, 26821, 28851, 29953, 30149, 31177, 31453, 36647, 39200, 39432, 20445, 22561, 22577, 23542, 26222, 27493, 27921, 28282, 28541, 29668, 29995, 33769, 35036, 35091, 35676, 36628, 20239, 20693, 21264, 21340, 23443, 24489, 26381, 31119, 33145, 33583, 34068, 35079, 35206, 36665, 36667, 39333, 39954, 26412, 20086, 20472, 22857, 23553, 23791, 23792, 25447, 26834, 28925, 29090, 29739, 32299, 34028, 34562, 36898, 37586, 40179, 19981, 20184, 20463, 20613, 21078, 21103, 21542, 21648, 22496, 22827, 23142, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 23386, 23413, 23500, 24220, 63846, 25206, 25975, 26023, 28014, 28325, 29238, 31526, 31807, 32566, 33104, 33105, 33178, 33344, 33433, 33705, 35331, 36e3, 36070, 36091, 36212, 36282, 37096, 37340, 38428, 38468, 39385, 40167, 21271, 20998, 21545, 22132, 22707, 22868, 22894, 24575, 24996, 25198, 26128, 27774, 28954, 30406, 31881, 31966, 32027, 33452, 36033, 38640, 63847, 20315, 24343, 24447, 25282, 23849, 26379, 26842, 30844, 32323, 40300, 19989, 20633, 21269, 21290, 21329, 22915, 23138, 24199, 24754, 24970, 25161, 25209, 26e3, 26503, 27047, 27604, 27606, 27607, 27608, 27832, 63848, 29749, 30202, 30738, 30865, 31189, 31192, 31875, 32203, 32737, 32933, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 33086, 33218, 33778, 34586, 35048, 35513, 35692, 36027, 37145, 38750, 39131, 40763, 22188, 23338, 24428, 25996, 27315, 27567, 27996, 28657, 28693, 29277, 29613, 36007, 36051, 38971, 24977, 27703, 32856, 39425, 20045, 20107, 20123, 20181, 20282, 20284, 20351, 20447, 20735, 21490, 21496, 21766, 21987, 22235, 22763, 22882, 23057, 23531, 23546, 23556, 24051, 24107, 24473, 24605, 25448, 26012, 26031, 26614, 26619, 26797, 27515, 27801, 27863, 28195, 28681, 29509, 30722, 31038, 31040, 31072, 31169, 31721, 32023, 32114, 32902, 33293, 33678, 34001, 34503, 35039, 35408, 35422, 35613, 36060, 36198, 36781, 37034, 39164, 39391, 40605, 21066, 63849, 26388, 63850, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 20632, 21034, 23665, 25955, 27733, 29642, 29987, 30109, 31639, 33948, 37240, 38704, 20087, 25746, 27578, 29022, 34217, 19977, 63851, 26441, 26862, 28183, 33439, 34072, 34923, 25591, 28545, 37394, 39087, 19978, 20663, 20687, 20767, 21830, 21930, 22039, 23360, 23577, 23776, 24120, 24202, 24224, 24258, 24819, 26705, 27233, 28248, 29245, 29248, 29376, 30456, 31077, 31665, 32724, 35059, 35316, 35443, 35937, 36062, 38684, 22622, 29885, 36093, 21959, 63852, 31329, 32034, 33394, 29298, 29983, 29989, 63853, 31513, 22661, 22779, 23996, 24207, 24246, 24464, 24661, 25234, 25471, 25933, 26257, 26329, 26360, 26646, 26866, 29312, 29790, 31598, 32110, 32214, 32626, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 32997, 33298, 34223, 35199, 35475, 36893, 37604, 40653, 40736, 22805, 22893, 24109, 24796, 26132, 26227, 26512, 27728, 28101, 28511, 30707, 30889, 33990, 37323, 37675, 20185, 20682, 20808, 21892, 23307, 23459, 25159, 25982, 26059, 28210, 29053, 29697, 29764, 29831, 29887, 30316, 31146, 32218, 32341, 32680, 33146, 33203, 33337, 34330, 34796, 35445, 36323, 36984, 37521, 37925, 39245, 39854, 21352, 23633, 26964, 27844, 27945, 28203, 33292, 34203, 35131, 35373, 35498, 38634, 40807, 21089, 26297, 27570, 32406, 34814, 36109, 38275, 38493, 25885, 28041, 29166, 63854, 22478, 22995, 23468, 24615, 24826, 25104, 26143, 26207, 29481, 29689, 30427, 30465, 31596, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 32854, 32882, 33125, 35488, 37266, 19990, 21218, 27506, 27927, 31237, 31545, 32048, 63855, 36016, 21484, 22063, 22609, 23477, 23567, 23569, 24034, 25152, 25475, 25620, 26157, 26803, 27836, 28040, 28335, 28703, 28836, 29138, 29990, 30095, 30094, 30233, 31505, 31712, 31787, 32032, 32057, 34092, 34157, 34311, 35380, 36877, 36961, 37045, 37559, 38902, 39479, 20439, 23660, 26463, 28049, 31903, 32396, 35606, 36118, 36895, 23403, 24061, 25613, 33984, 36956, 39137, 29575, 23435, 24730, 26494, 28126, 35359, 35494, 36865, 38924, 21047, 63856, 28753, 30862, 37782, 34928, 37335, 20462, 21463, 22013, 22234, 22402, 22781, 23234, 23432, 23723, 23744, 24101, 24833, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 25101, 25163, 25480, 25628, 25910, 25976, 27193, 27530, 27700, 27929, 28465, 29159, 29417, 29560, 29703, 29874, 30246, 30561, 31168, 31319, 31466, 31929, 32143, 32172, 32353, 32670, 33065, 33585, 33936, 34010, 34282, 34966, 35504, 35728, 36664, 36930, 36995, 37228, 37526, 37561, 38539, 38567, 38568, 38614, 38656, 38920, 39318, 39635, 39706, 21460, 22654, 22809, 23408, 23487, 28113, 28506, 29087, 29729, 29881, 32901, 33789, 24033, 24455, 24490, 24642, 26092, 26642, 26991, 27219, 27529, 27957, 28147, 29667, 30462, 30636, 31565, 32020, 33059, 33308, 33600, 34036, 34147, 35426, 35524, 37255, 37662, 38918, 39348, 25100, 34899, 36848, 37477, 23815, 23847, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 23913, 29791, 33181, 34664, 28629, 25342, 32722, 35126, 35186, 19998, 20056, 20711, 21213, 21319, 25215, 26119, 32361, 34821, 38494, 20365, 21273, 22070, 22987, 23204, 23608, 23630, 23629, 24066, 24337, 24643, 26045, 26159, 26178, 26558, 26612, 29468, 30690, 31034, 32709, 33940, 33997, 35222, 35430, 35433, 35553, 35925, 35962, 22516, 23508, 24335, 24687, 25325, 26893, 27542, 28252, 29060, 31698, 34645, 35672, 36606, 39135, 39166, 20280, 20353, 20449, 21627, 23072, 23480, 24892, 26032, 26216, 29180, 30003, 31070, 32051, 33102, 33251, 33688, 34218, 34254, 34563, 35338, 36523, 36763, 63857, 36805, 22833, 23460, 23526, 24713, 23529, 23563, 24515, 27777, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 63858, 28145, 28683, 29978, 33455, 35574, 20160, 21313, 63859, 38617, 27663, 20126, 20420, 20818, 21854, 23077, 23784, 25105, 29273, 33469, 33706, 34558, 34905, 35357, 38463, 38597, 39187, 40201, 40285, 22538, 23731, 23997, 24132, 24801, 24853, 25569, 27138, 28197, 37122, 37716, 38990, 39952, 40823, 23433, 23736, 25353, 26191, 26696, 30524, 38593, 38797, 38996, 39839, 26017, 35585, 36555, 38332, 21813, 23721, 24022, 24245, 26263, 30284, 33780, 38343, 22739, 25276, 29390, 40232, 20208, 22830, 24591, 26171, 27523, 31207, 40230, 21395, 21696, 22467, 23830, 24859, 26326, 28079, 30861, 33406, 38552, 38724, 21380, 25212, 25494, 28082, 32266, 33099, 38989, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 27387, 32588, 40367, 40474, 20063, 20539, 20918, 22812, 24825, 25590, 26928, 29242, 32822, 63860, 37326, 24369, 63861, 63862, 32004, 33509, 33903, 33979, 34277, 36493, 63863, 20335, 63864, 63865, 22756, 23363, 24665, 25562, 25880, 25965, 26264, 63866, 26954, 27171, 27915, 28673, 29036, 30162, 30221, 31155, 31344, 63867, 32650, 63868, 35140, 63869, 35731, 37312, 38525, 63870, 39178, 22276, 24481, 26044, 28417, 30208, 31142, 35486, 39341, 39770, 40812, 20740, 25014, 25233, 27277, 33222, 20547, 22576, 24422, 28937, 35328, 35578, 23420, 34326, 20474, 20796, 22196, 22852, 25513, 28153, 23978, 26989, 20870, 20104, 20313, 63871, 63872, 63873, 22914, 63874, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 63875, 27487, 27741, 63876, 29877, 30998, 63877, 33287, 33349, 33593, 36671, 36701, 63878, 39192, 63879, 63880, 63881, 20134, 63882, 22495, 24441, 26131, 63883, 63884, 30123, 32377, 35695, 63885, 36870, 39515, 22181, 22567, 23032, 23071, 23476, 63886, 24310, 63887, 63888, 25424, 25403, 63889, 26941, 27783, 27839, 28046, 28051, 28149, 28436, 63890, 28895, 28982, 29017, 63891, 29123, 29141, 63892, 30799, 30831, 63893, 31605, 32227, 63894, 32303, 63895, 34893, 36575, 63896, 63897, 63898, 37467, 63899, 40182, 63900, 63901, 63902, 24709, 28037, 63903, 29105, 63904, 63905, 38321, 21421, 63906, 63907, 63908, 26579, 63909, 28814, 28976, 29744, 33398, 33490, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 63910, 38331, 39653, 40573, 26308, 63911, 29121, 33865, 63912, 63913, 22603, 63914, 63915, 23992, 24433, 63916, 26144, 26254, 27001, 27054, 27704, 27891, 28214, 28481, 28634, 28699, 28719, 29008, 29151, 29552, 63917, 29787, 63918, 29908, 30408, 31310, 32403, 63919, 63920, 33521, 35424, 36814, 63921, 37704, 63922, 38681, 63923, 63924, 20034, 20522, 63925, 21e3, 21473, 26355, 27757, 28618, 29450, 30591, 31330, 33454, 34269, 34306, 63926, 35028, 35427, 35709, 35947, 63927, 37555, 63928, 38675, 38928, 20116, 20237, 20425, 20658, 21320, 21566, 21555, 21978, 22626, 22714, 22887, 23067, 23524, 24735, 63929, 25034, 25942, 26111, 26212, 26791, 27738, 28595, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 28879, 29100, 29522, 31613, 34568, 35492, 39986, 40711, 23627, 27779, 29508, 29577, 37434, 28331, 29797, 30239, 31337, 32277, 34314, 20800, 22725, 25793, 29934, 29973, 30320, 32705, 37013, 38605, 39252, 28198, 29926, 31401, 31402, 33253, 34521, 34680, 35355, 23113, 23436, 23451, 26785, 26880, 28003, 29609, 29715, 29740, 30871, 32233, 32747, 33048, 33109, 33694, 35916, 38446, 38929, 26352, 24448, 26106, 26505, 27754, 29579, 20525, 23043, 27498, 30702, 22806, 23916, 24013, 29477, 30031, 63930, 63931, 20709, 20985, 22575, 22829, 22934, 23002, 23525, 63932, 63933, 23970, 25303, 25622, 25747, 25854, 63934, 26332, 63935, 27208, 63936, 29183, 29796, 63937, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 31368, 31407, 32327, 32350, 32768, 33136, 63938, 34799, 35201, 35616, 36953, 63939, 36992, 39250, 24958, 27442, 28020, 32287, 35109, 36785, 20433, 20653, 20887, 21191, 22471, 22665, 23481, 24248, 24898, 27029, 28044, 28263, 28342, 29076, 29794, 29992, 29996, 32883, 33592, 33993, 36362, 37780, 37854, 63940, 20110, 20305, 20598, 20778, 21448, 21451, 21491, 23431, 23507, 23588, 24858, 24962, 26100, 29275, 29591, 29760, 30402, 31056, 31121, 31161, 32006, 32701, 33419, 34261, 34398, 36802, 36935, 37109, 37354, 38533, 38632, 38633, 21206, 24423, 26093, 26161, 26671, 29020, 31286, 37057, 38922, 20113, 63941, 27218, 27550, 28560, 29065, 32792, 33464, 34131, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 36939, 38549, 38642, 38907, 34074, 39729, 20112, 29066, 38596, 20803, 21407, 21729, 22291, 22290, 22435, 23195, 23236, 23491, 24616, 24895, 25588, 27781, 27961, 28274, 28304, 29232, 29503, 29783, 33489, 34945, 36677, 36960, 63942, 38498, 39e3, 40219, 26376, 36234, 37470, 20301, 20553, 20702, 21361, 22285, 22996, 23041, 23561, 24944, 26256, 28205, 29234, 29771, 32239, 32963, 33806, 33894, 34111, 34655, 34907, 35096, 35586, 36949, 38859, 39759, 20083, 20369, 20754, 20842, 63943, 21807, 21929, 23418, 23461, 24188, 24189, 24254, 24736, 24799, 24840, 24841, 25540, 25912, 26377, 63944, 26580, 26586, 63945, 26977, 26978, 27833, 27943, 63946, 28216, 63947, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 28641, 29494, 29495, 63948, 29788, 30001, 63949, 30290, 63950, 63951, 32173, 33278, 33848, 35029, 35480, 35547, 35565, 36400, 36418, 36938, 36926, 36986, 37193, 37321, 37742, 63952, 63953, 22537, 63954, 27603, 32905, 32946, 63955, 63956, 20801, 22891, 23609, 63957, 63958, 28516, 29607, 32996, 36103, 63959, 37399, 38287, 63960, 63961, 63962, 63963, 32895, 25102, 28700, 32104, 34701, 63964, 22432, 24681, 24903, 27575, 35518, 37504, 38577, 20057, 21535, 28139, 34093, 38512, 38899, 39150, 25558, 27875, 37009, 20957, 25033, 33210, 40441, 20381, 20506, 20736, 23452, 24847, 25087, 25836, 26885, 27589, 30097, 30691, 32681, 33380, 34191, 34811, 34915, 35516, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 35696, 37291, 20108, 20197, 20234, 63965, 63966, 22839, 23016, 63967, 24050, 24347, 24411, 24609, 63968, 63969, 63970, 63971, 29246, 29669, 63972, 30064, 30157, 63973, 31227, 63974, 32780, 32819, 32900, 33505, 33617, 63975, 63976, 36029, 36019, 36999, 63977, 63978, 39156, 39180, 63979, 63980, 28727, 30410, 32714, 32716, 32764, 35610, 20154, 20161, 20995, 21360, 63981, 21693, 22240, 23035, 23493, 24341, 24525, 28270, 63982, 63983, 32106, 33589, 63984, 34451, 35469, 63985, 38765, 38775, 63986, 63987, 19968, 20314, 20350, 22777, 26085, 28322, 36920, 37808, 39353, 20219, 22764, 22922, 23001, 24641, 63988, 63989, 31252, 63990, 33615, 36035, 20837, 21316, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 63991, 63992, 63993, 20173, 21097, 23381, 33471, 20180, 21050, 21672, 22985, 23039, 23376, 23383, 23388, 24675, 24904, 28363, 28825, 29038, 29574, 29943, 30133, 30913, 32043, 32773, 33258, 33576, 34071, 34249, 35566, 36039, 38604, 20316, 21242, 22204, 26027, 26152, 28796, 28856, 29237, 32189, 33421, 37196, 38592, 40306, 23409, 26855, 27544, 28538, 30430, 23697, 26283, 28507, 31668, 31786, 34870, 38620, 19976, 20183, 21280, 22580, 22715, 22767, 22892, 23559, 24115, 24196, 24373, 25484, 26290, 26454, 27167, 27299, 27404, 28479, 29254, 63994, 29520, 29835, 31456, 31911, 33144, 33247, 33255, 33674, 33900, 34083, 34196, 34255, 35037, 36115, 37292, 38263, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 38556, 20877, 21705, 22312, 23472, 25165, 26448, 26685, 26771, 28221, 28371, 28797, 32289, 35009, 36001, 36617, 40779, 40782, 29229, 31631, 35533, 37658, 20295, 20302, 20786, 21632, 22992, 24213, 25269, 26485, 26990, 27159, 27822, 28186, 29401, 29482, 30141, 31672, 32053, 33511, 33785, 33879, 34295, 35419, 36015, 36487, 36889, 37048, 38606, 40799, 21219, 21514, 23265, 23490, 25688, 25973, 28404, 29380, 63995, 30340, 31309, 31515, 31821, 32318, 32735, 33659, 35627, 36042, 36196, 36321, 36447, 36842, 36857, 36969, 37841, 20291, 20346, 20659, 20840, 20856, 21069, 21098, 22625, 22652, 22880, 23560, 23637, 24283, 24731, 25136, 26643, 27583, 27656, 28593, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 29006, 29728, 3e4, 30008, 30033, 30322, 31564, 31627, 31661, 31686, 32399, 35438, 36670, 36681, 37439, 37523, 37666, 37931, 38651, 39002, 39019, 39198, 20999, 25130, 25240, 27993, 30308, 31434, 31680, 32118, 21344, 23742, 24215, 28472, 28857, 31896, 38673, 39822, 40670, 25509, 25722, 34678, 19969, 20117, 20141, 20572, 20597, 21576, 22979, 23450, 24128, 24237, 24311, 24449, 24773, 25402, 25919, 25972, 26060, 26230, 26232, 26622, 26984, 27273, 27491, 27712, 28096, 28136, 28191, 28254, 28702, 28833, 29582, 29693, 30010, 30555, 30855, 31118, 31243, 31357, 31934, 32142, 33351, 35330, 35562, 35998, 37165, 37194, 37336, 37478, 37580, 37664, 38662, 38742, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 38748, 38914, 40718, 21046, 21137, 21884, 22564, 24093, 24351, 24716, 25552, 26799, 28639, 31085, 31532, 33229, 34234, 35069, 35576, 36420, 37261, 38500, 38555, 38717, 38988, 40778, 20430, 20806, 20939, 21161, 22066, 24340, 24427, 25514, 25805, 26089, 26177, 26362, 26361, 26397, 26781, 26839, 27133, 28437, 28526, 29031, 29157, 29226, 29866, 30522, 31062, 31066, 31199, 31264, 31381, 31895, 31967, 32068, 32368, 32903, 34299, 34468, 35412, 35519, 36249, 36481, 36896, 36973, 37347, 38459, 38613, 40165, 26063, 31751, 36275, 37827, 23384, 23562, 21330, 25305, 29469, 20519, 23447, 24478, 24752, 24939, 26837, 28121, 29742, 31278, 32066, 32156, 32305, 33131, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 36394, 36405, 37758, 37912, 20304, 22352, 24038, 24231, 25387, 32618, 20027, 20303, 20367, 20570, 23005, 32964, 21610, 21608, 22014, 22863, 23449, 24030, 24282, 26205, 26417, 26609, 26666, 27880, 27954, 28234, 28557, 28855, 29664, 30087, 31820, 32002, 32044, 32162, 33311, 34523, 35387, 35461, 36208, 36490, 36659, 36913, 37198, 37202, 37956, 39376, 31481, 31909, 20426, 20737, 20934, 22472, 23535, 23803, 26201, 27197, 27994, 28310, 28652, 28940, 30063, 31459, 34850, 36897, 36981, 38603, 39423, 33537, 20013, 20210, 34886, 37325, 21373, 27355, 26987, 27713, 33914, 22686, 24974, 26366, 25327, 28893, 29969, 30151, 32338, 33976, 35657, 36104, 20043, 21482, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 21675, 22320, 22336, 24535, 25345, 25351, 25711, 25903, 26088, 26234, 26525, 26547, 27490, 27744, 27802, 28460, 30693, 30757, 31049, 31063, 32025, 32930, 33026, 33267, 33437, 33463, 34584, 35468, 63996, 36100, 36286, 36978, 30452, 31257, 31287, 32340, 32887, 21767, 21972, 22645, 25391, 25634, 26185, 26187, 26733, 27035, 27524, 27941, 28337, 29645, 29800, 29857, 30043, 30137, 30433, 30494, 30603, 31206, 32265, 32285, 33275, 34095, 34967, 35386, 36049, 36587, 36784, 36914, 37805, 38499, 38515, 38663, 20356, 21489, 23018, 23241, 24089, 26702, 29894, 30142, 31209, 31378, 33187, 34541, 36074, 36300, 36845, 26015, 26389, 63997, 22519, 28503, 32221, 36655, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 37878, 38598, 24501, 25074, 28548, 19988, 20376, 20511, 21449, 21983, 23919, 24046, 27425, 27492, 30923, 31642, 63998, 36425, 36554, 36974, 25417, 25662, 30528, 31364, 37679, 38015, 40810, 25776, 28591, 29158, 29864, 29914, 31428, 31762, 32386, 31922, 32408, 35738, 36106, 38013, 39184, 39244, 21049, 23519, 25830, 26413, 32046, 20717, 21443, 22649, 24920, 24921, 25082, 26028, 31449, 35730, 35734, 20489, 20513, 21109, 21809, 23100, 24288, 24432, 24884, 25950, 26124, 26166, 26274, 27085, 28356, 28466, 29462, 30241, 31379, 33081, 33369, 33750, 33980, 20661, 22512, 23488, 23528, 24425, 25505, 30758, 32181, 33756, 34081, 37319, 37365, 20874, 26613, 31574, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 36012, 20932, 22971, 24765, 34389, 20508, 63999, 21076, 23610, 24957, 25114, 25299, 25842, 26021, 28364, 30240, 33034, 36448, 38495, 38587, 20191, 21315, 21912, 22825, 24029, 25797, 27849, 28154, 29588, 31359, 33307, 34214, 36068, 36368, 36983, 37351, 38369, 38433, 38854, 20984, 21746, 21894, 24505, 25764, 28552, 32180, 36639, 36685, 37941, 20681, 23574, 27838, 28155, 29979, 30651, 31805, 31844, 35449, 35522, 22558, 22974, 24086, 25463, 29266, 30090, 30571, 35548, 36028, 36626, 24307, 26228, 28152, 32893, 33729, 35531, 38737, 39894, 64e3, 21059, 26367, 28053, 28399, 32224, 35558, 36910, 36958, 39636, 21021, 21119, 21736, 24980, 25220, 25307, 26786, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 26898, 26970, 27189, 28818, 28966, 30813, 30977, 30990, 31186, 31245, 32918, 33400, 33493, 33609, 34121, 35970, 36229, 37218, 37259, 37294, 20419, 22225, 29165, 30679, 34560, 35320, 23544, 24534, 26449, 37032, 21474, 22618, 23541, 24740, 24961, 25696, 32317, 32880, 34085, 37507, 25774, 20652, 23828, 26368, 22684, 25277, 25512, 26894, 27e3, 27166, 28267, 30394, 31179, 33467, 33833, 35535, 36264, 36861, 37138, 37195, 37276, 37648, 37656, 37786, 38619, 39478, 39949, 19985, 30044, 31069, 31482, 31569, 31689, 32302, 33988, 36441, 36468, 36600, 36880, 26149, 26943, 29763, 20986, 26414, 40668, 20805, 24544, 27798, 34802, 34909, 34935, 24756, 33205, 33795, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 36101, 21462, 21561, 22068, 23094, 23601, 28810, 32736, 32858, 33030, 33261, 36259, 37257, 39519, 40434, 20596, 20164, 21408, 24827, 28204, 23652, 20360, 20516, 21988, 23769, 24159, 24677, 26772, 27835, 28100, 29118, 30164, 30196, 30305, 31258, 31305, 32199, 32251, 32622, 33268, 34473, 36636, 38601, 39347, 40786, 21063, 21189, 39149, 35242, 19971, 26578, 28422, 20405, 23522, 26517, 27784, 28024, 29723, 30759, 37341, 37756, 34756, 31204, 31281, 24555, 20182, 21668, 21822, 22702, 22949, 24816, 25171, 25302, 26422, 26965, 33333, 38464, 39345, 39389, 20524, 21331, 21828, 22396, 64001, 25176, 64002, 25826, 26219, 26589, 28609, 28655, 29730, 29752, 35351, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 37944, 21585, 22022, 22374, 24392, 24986, 27470, 28760, 28845, 32187, 35477, 22890, 33067, 25506, 30472, 32829, 36010, 22612, 25645, 27067, 23445, 24081, 28271, 64003, 34153, 20812, 21488, 22826, 24608, 24907, 27526, 27760, 27888, 31518, 32974, 33492, 36294, 37040, 39089, 64004, 25799, 28580, 25745, 25860, 20814, 21520, 22303, 35342, 24927, 26742, 64005, 30171, 31570, 32113, 36890, 22534, 27084, 33151, 35114, 36864, 38969, 20600, 22871, 22956, 25237, 36879, 39722, 24925, 29305, 38358, 22369, 23110, 24052, 25226, 25773, 25850, 26487, 27874, 27966, 29228, 29750, 30772, 32631, 33453, 36315, 38935, 21028, 22338, 26495, 29256, 29923, 36009, 36774, 37393, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 38442, 20843, 21485, 25420, 20329, 21764, 24726, 25943, 27803, 28031, 29260, 29437, 31255, 35207, 35997, 24429, 28558, 28921, 33192, 24846, 20415, 20559, 25153, 29255, 31687, 32232, 32745, 36941, 38829, 39449, 36022, 22378, 24179, 26544, 33805, 35413, 21536, 23318, 24163, 24290, 24330, 25987, 32954, 34109, 38281, 38491, 20296, 21253, 21261, 21263, 21638, 21754, 22275, 24067, 24598, 25243, 25265, 25429, 64006, 27873, 28006, 30129, 30770, 32990, 33071, 33502, 33889, 33970, 34957, 35090, 36875, 37610, 39165, 39825, 24133, 26292, 26333, 28689, 29190, 64007, 20469, 21117, 24426, 24915, 26451, 27161, 28418, 29922, 31080, 34920, 35961, 39111, 39108, 39491, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 21697, 31263, 26963, 35575, 35914, 39080, 39342, 24444, 25259, 30130, 30382, 34987, 36991, 38466, 21305, 24380, 24517, 27852, 29644, 30050, 30091, 31558, 33534, 39325, 20047, 36924, 19979, 20309, 21414, 22799, 24264, 26160, 27827, 29781, 33655, 34662, 36032, 36944, 38686, 39957, 22737, 23416, 34384, 35604, 40372, 23506, 24680, 24717, 26097, 27735, 28450, 28579, 28698, 32597, 32752, 38289, 38290, 38480, 38867, 21106, 36676, 20989, 21547, 21688, 21859, 21898, 27323, 28085, 32216, 33382, 37532, 38519, 40569, 21512, 21704, 30418, 34532, 38308, 38356, 38492, 20130, 20233, 23022, 23270, 24055, 24658, 25239, 26477, 26689, 27782, 28207, 32568, 32923, 33322, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 64008, 64009, 38917, 20133, 20565, 21683, 22419, 22874, 23401, 23475, 25032, 26999, 28023, 28707, 34809, 35299, 35442, 35559, 36994, 39405, 39608, 21182, 26680, 20502, 24184, 26447, 33607, 34892, 20139, 21521, 22190, 29670, 37141, 38911, 39177, 39255, 39321, 22099, 22687, 34395, 35377, 25010, 27382, 29563, 36562, 27463, 38570, 39511, 22869, 29184, 36203, 38761, 20436, 23796, 24358, 25080, 26203, 27883, 28843, 29572, 29625, 29694, 30505, 30541, 32067, 32098, 32291, 33335, 34898, 64010, 36066, 37449, 39023, 23377, 31348, 34880, 38913, 23244, 20448, 21332, 22846, 23805, 25406, 28025, 29433, 33029, 33031, 33698, 37583, 38960, 20136, 20804, 21009, 22411, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 24418, 27842, 28366, 28677, 28752, 28847, 29074, 29673, 29801, 33610, 34722, 34913, 36872, 37026, 37795, 39336, 20846, 24407, 24800, 24935, 26291, 34137, 36426, 37295, 38795, 20046, 20114, 21628, 22741, 22778, 22909, 23733, 24359, 25142, 25160, 26122, 26215, 27627, 28009, 28111, 28246, 28408, 28564, 28640, 28649, 28765, 29392, 29733, 29786, 29920, 30355, 31068, 31946, 32286, 32993, 33446, 33899, 33983, 34382, 34399, 34676, 35703, 35946, 37804, 38912, 39013, 24785, 25110, 37239, 23130, 26127, 28151, 28222, 29759, 39746, 24573, 24794, 31503, 21700, 24344, 27742, 27859, 27946, 28888, 32005, 34425, 35340, 40251, 21270, 21644, 23301, 27194, 28779, 30069, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 31117, 31166, 33457, 33775, 35441, 35649, 36008, 38772, 64011, 25844, 25899, 30906, 30907, 31339, 20024, 21914, 22864, 23462, 24187, 24739, 25563, 27489, 26213, 26707, 28185, 29029, 29872, 32008, 36996, 39529, 39973, 27963, 28369, 29502, 35905, 38346, 20976, 24140, 24488, 24653, 24822, 24880, 24908, 26179, 26180, 27045, 27841, 28255, 28361, 28514, 29004, 29852, 30343, 31681, 31783, 33618, 34647, 36945, 38541, 40643, 21295, 22238, 24315, 24458, 24674, 24724, 25079, 26214, 26371, 27292, 28142, 28590, 28784, 29546, 32362, 33214, 33588, 34516, 35496, 36036, 21123, 29554, 23446, 27243, 37892, 21742, 22150, 23389, 25928, 25989, 26313, 26783, 28045, 28102, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 29243, 32948, 37237, 39501, 20399, 20505, 21402, 21518, 21564, 21897, 21957, 24127, 24460, 26429, 29030, 29661, 36869, 21211, 21235, 22628, 22734, 28932, 29071, 29179, 34224, 35347, 26248, 34216, 21927, 26244, 29002, 33841, 21321, 21913, 27585, 24409, 24509, 25582, 26249, 28999, 35569, 36637, 40638, 20241, 25658, 28875, 30054, 34407, 24676, 35662, 40440, 20807, 20982, 21256, 27958, 33016, 40657, 26133, 27427, 28824, 30165, 21507, 23673, 32007, 35350, 27424, 27453, 27462, 21560, 24688, 27965, 32725, 33288, 20694, 20958, 21916, 22123, 22221, 23020, 23305, 24076, 24985, 24984, 25137, 26206, 26342, 29081, 29113, 29114, 29351, 31143, 31232, 32690, 35440, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null],
"gb18030": [19970, 19972, 19973, 19974, 19983, 19986, 19991, 19999, 2e4, 20001, 20003, 20006, 20009, 20014, 20015, 20017, 20019, 20021, 20023, 20028, 20032, 20033, 20034, 20036, 20038, 20042, 20049, 20053, 20055, 20058, 20059, 20066, 20067, 20068, 20069, 20071, 20072, 20074, 20075, 20076, 20077, 20078, 20079, 20082, 20084, 20085, 20086, 20087, 20088, 20089, 20090, 20091, 20092, 20093, 20095, 20096, 20097, 20098, 20099, 20100, 20101, 20103, 20106, 20112, 20118, 20119, 20121, 20124, 20125, 20126, 20131, 20138, 20143, 20144, 20145, 20148, 20150, 20151, 20152, 20153, 20156, 20157, 20158, 20168, 20172, 20175, 20176, 20178, 20186, 20187, 20188, 20192, 20194, 20198, 20199, 20201, 20205, 20206, 20207, 20209, 20212, 20216, 20217, 20218, 20220, 20222, 20224, 20226, 20227, 20228, 20229, 20230, 20231, 20232, 20235, 20236, 20242, 20243, 20244, 20245, 20246, 20252, 20253, 20257, 20259, 20264, 20265, 20268, 20269, 20270, 20273, 20275, 20277, 20279, 20281, 20283, 20286, 20287, 20288, 20289, 20290, 20292, 20293, 20295, 20296, 20297, 20298, 20299, 20300, 20306, 20308, 20310, 20321, 20322, 20326, 20328, 20330, 20331, 20333, 20334, 20337, 20338, 20341, 20343, 20344, 20345, 20346, 20349, 20352, 20353, 20354, 20357, 20358, 20359, 20362, 20364, 20366, 20368, 20370, 20371, 20373, 20374, 20376, 20377, 20378, 20380, 20382, 20383, 20385, 20386, 20388, 20395, 20397, 20400, 20401, 20402, 20403, 20404, 20406, 20407, 20408, 20409, 20410, 20411, 20412, 20413, 20414, 20416, 20417, 20418, 20422, 20423, 20424, 20425, 20427, 20428, 20429, 20434, 20435, 20436, 20437, 20438, 20441, 20443, 20448, 20450, 20452, 20453, 20455, 20459, 20460, 20464, 20466, 20468, 20469, 20470, 20471, 20473, 20475, 20476, 20477, 20479, 20480, 20481, 20482, 20483, 20484, 20485, 20486, 20487, 20488, 20489, 20490, 20491, 20494, 20496, 20497, 20499, 20501, 20502, 20503, 20507, 20509, 20510, 20512, 20514, 20515, 20516, 20519, 20523, 20527, 20528, 20529, 20530, 20531, 20532, 20533, 20534, 20535, 20536, 20537, 20539, 20541, 20543, 20544, 20545, 20546, 20548, 20549, 20550, 20553, 20554, 20555, 20557, 20560, 20561, 20562, 20563, 20564, 20566, 20567, 20568, 20569, 20571, 20573, 20574, 20575, 20576, 20577, 20578, 20579, 20580, 20582, 20583, 20584, 20585, 20586, 20587, 20589, 20590, 20591, 20592, 20593, 20594, 20595, 20596, 20597, 20600, 20601, 20602, 20604, 20605, 20609, 20610, 20611, 20612, 20614, 20615, 20617, 20618, 20619, 20620, 20622, 20623, 20624, 20625, 20626, 20627, 20628, 20629, 20630, 20631, 20632, 20633, 20634, 20635, 20636, 20637, 20638, 20639, 20640, 20641, 20642, 20644, 20646, 20650, 20651, 20653, 20654, 20655, 20656, 20657, 20659, 20660, 20661, 20662, 20663, 20664, 20665, 20668, 20669, 20670, 20671, 20672, 20673, 20674, 20675, 20676, 20677, 20678, 20679, 20680, 20681, 20682, 20683, 20684, 20685, 20686, 20688, 20689, 20690, 20691, 20692, 20693, 20695, 20696, 20697, 20699, 20700, 20701, 20702, 20703, 20704, 20705, 20706, 20707, 20708, 20709, 20712, 20713, 20714, 20715, 20719, 20720, 20721, 20722, 20724, 20726, 20727, 20728, 20729, 20730, 20732, 20733, 20734, 20735, 20736, 20737, 20738, 20739, 20740, 20741, 20744, 20745, 20746, 20748, 20749, 20750, 20751, 20752, 20753, 20755, 20756, 20757, 20758, 20759, 20760, 20761, 20762, 20763, 20764, 20765, 20766, 20767, 20768, 20770, 20771, 20772, 20773, 20774, 20775, 20776, 20777, 20778, 20779, 20780, 20781, 20782, 20783, 20784, 20785, 20786, 20787, 20788, 20789, 20790, 20791, 20792, 20793, 20794, 20795, 20796, 20797, 20798, 20802, 20807, 20810, 20812, 20814, 20815, 20816, 20818, 20819, 20823, 20824, 20825, 20827, 20829, 20830, 20831, 20832, 20833, 20835, 20836, 20838, 20839, 20841, 20842, 20847, 20850, 20858, 20862, 20863, 20867, 20868, 20870, 20871, 20874, 20875, 20878, 20879, 20880, 20881, 20883, 20884, 20888, 20890, 20893, 20894, 20895, 20897, 20899, 20902, 20903, 20904, 20905, 20906, 20909, 20910, 20916, 20920, 20921, 20922, 20926, 20927, 20929, 20930, 20931, 20933, 20936, 20938, 20941, 20942, 20944, 20946, 20947, 20948, 20949, 20950, 20951, 20952, 20953, 20954, 20956, 20958, 20959, 20962, 20963, 20965, 20966, 20967, 20968, 20969, 20970, 20972, 20974, 20977, 20978, 20980, 20983, 20990, 20996, 20997, 21001, 21003, 21004, 21007, 21008, 21011, 21012, 21013, 21020, 21022, 21023, 21025, 21026, 21027, 21029, 21030, 21031, 21034, 21036, 21039, 21041, 21042, 21044, 21045, 21052, 21054, 21060, 21061, 21062, 21063, 21064, 21065, 21067, 21070, 21071, 21074, 21075, 21077, 21079, 21080, 21081, 21082, 21083, 21085, 21087, 21088, 21090, 21091, 21092, 21094, 21096, 21099, 21100, 21101, 21102, 21104, 21105, 21107, 21108, 21109, 21110, 21111, 21112, 21113, 21114, 21115, 21116, 21118, 21120, 21123, 21124, 21125, 21126, 21127, 21129, 21130, 21131, 21132, 21133, 21134, 21135, 21137, 21138, 21140, 21141, 21142, 21143, 21144, 21145, 21146, 21148, 21156, 21157, 21158, 21159, 21166, 21167, 21168, 21172, 21173, 21174, 21175, 21176, 21177, 21178, 21179, 21180, 21181, 21184, 21185, 21186, 21188, 21189, 21190, 21192, 21194, 21196, 21197, 21198, 21199, 21201, 21203, 21204, 21205, 21207, 21209, 21210, 21211, 21212, 21213, 21214, 21216, 21217, 21218, 21219, 21221, 21222, 21223, 21224, 21225, 21226, 21227, 21228, 21229, 21230, 21231, 21233, 21234, 21235, 21236, 21237, 21238, 21239, 21240, 21243, 21244, 21245, 21249, 21250, 21251, 21252, 21255, 21257, 21258, 21259, 21260, 21262, 21265, 21266, 21267, 21268, 21272, 21275, 21276, 21278, 21279, 21282, 21284, 21285, 21287, 21288, 21289, 21291, 21292, 21293, 21295, 21296, 21297, 21298, 21299, 21300, 21301, 21302, 21303, 21304, 21308, 21309, 21312, 21314, 21316, 21318, 21323, 21324, 21325, 21328, 21332, 21336, 21337, 21339, 21341, 21349, 21352, 21354, 21356, 21357, 21362, 21366, 21369, 21371, 21372, 21373, 21374, 21376, 21377, 21379, 21383, 21384, 21386, 21390, 21391, 21392, 21393, 21394, 21395, 21396, 21398, 21399, 21401, 21403, 21404, 21406, 21408, 21409, 21412, 21415, 21418, 21419, 21420, 21421, 21423, 21424, 21425, 21426, 21427, 21428, 21429, 21431, 21432, 21433, 21434, 21436, 21437, 21438, 21440, 21443, 21444, 21445, 21446, 21447, 21454, 21455, 21456, 21458, 21459, 21461, 21466, 21468, 21469, 21470, 21473, 21474, 21479, 21492, 21498, 21502, 21503, 21504, 21506, 21509, 21511, 21515, 21524, 21528, 21529, 21530, 21532, 21538, 21540, 21541, 21546, 21552, 21555, 21558, 21559, 21562, 21565, 21567, 21569, 21570, 21572, 21573, 21575, 21577, 21580, 21581, 21582, 21583, 21585, 21594, 21597, 21598, 21599, 21600, 21601, 21603, 21605, 21607, 21609, 21610, 21611, 21612, 21613, 21614, 21615, 21616, 21620, 21625, 21626, 21630, 21631, 21633, 21635, 21637, 21639, 21640, 21641, 21642, 21645, 21649, 21651, 21655, 21656, 21660, 21662, 21663, 21664, 21665, 21666, 21669, 21678, 21680, 21682, 21685, 21686, 21687, 21689, 21690, 21692, 21694, 21699, 21701, 21706, 21707, 21718, 21720, 21723, 21728, 21729, 21730, 21731, 21732, 21739, 21740, 21743, 21744, 21745, 21748, 21749, 21750, 21751, 21752, 21753, 21755, 21758, 21760, 21762, 21763, 21764, 21765, 21768, 21770, 21771, 21772, 21773, 21774, 21778, 21779, 21781, 21782, 21783, 21784, 21785, 21786, 21788, 21789, 21790, 21791, 21793, 21797, 21798, 21800, 21801, 21803, 21805, 21810, 21812, 21813, 21814, 21816, 21817, 21818, 21819, 21821, 21824, 21826, 21829, 21831, 21832, 21835, 21836, 21837, 21838, 21839, 21841, 21842, 21843, 21844, 21847, 21848, 21849, 21850, 21851, 21853, 21854, 21855, 21856, 21858, 21859, 21864, 21865, 21867, 21871, 21872, 21873, 21874, 21875, 21876, 21881, 21882, 21885, 21887, 21893, 21894, 21900, 21901, 21902, 21904, 21906, 21907, 21909, 21910, 21911, 21914, 21915, 21918, 21920, 21921, 21922, 21923, 21924, 21925, 21926, 21928, 21929, 21930, 21931, 21932, 21933, 21934, 21935, 21936, 21938, 21940, 21942, 21944, 21946, 21948, 21951, 21952, 21953, 21954, 21955, 21958, 21959, 21960, 21962, 21963, 21966, 21967, 21968, 21973, 21975, 21976, 21977, 21978, 21979, 21982, 21984, 21986, 21991, 21993, 21997, 21998, 22e3, 22001, 22004, 22006, 22008, 22009, 22010, 22011, 22012, 22015, 22018, 22019, 22020, 22021, 22022, 22023, 22026, 22027, 22029, 22032, 22033, 22034, 22035, 22036, 22037, 22038, 22039, 22041, 22042, 22044, 22045, 22048, 22049, 22050, 22053, 22054, 22056, 22057, 22058, 22059, 22062, 22063, 22064, 22067, 22069, 22071, 22072, 22074, 22076, 22077, 22078, 22080, 22081, 22082, 22083, 22084, 22085, 22086, 22087, 22088, 22089, 22090, 22091, 22095, 22096, 22097, 22098, 22099, 22101, 22102, 22106, 22107, 22109, 22110, 22111, 22112, 22113, 22115, 22117, 22118, 22119, 22125, 22126, 22127, 22128, 22130, 22131, 22132, 22133, 22135, 22136, 22137, 22138, 22141, 22142, 22143, 22144, 22145, 22146, 22147, 22148, 22151, 22152, 22153, 22154, 22155, 22156, 22157, 22160, 22161, 22162, 22164, 22165, 22166, 22167, 22168, 22169, 22170, 22171, 22172, 22173, 22174, 22175, 22176, 22177, 22178, 22180, 22181, 22182, 22183, 22184, 22185, 22186, 22187, 22188, 22189, 22190, 22192, 22193, 22194, 22195, 22196, 22197, 22198, 22200, 22201, 22202, 22203, 22205, 22206, 22207, 22208, 22209, 22210, 22211, 22212, 22213, 22214, 22215, 22216, 22217, 22219, 22220, 22221, 22222, 22223, 22224, 22225, 22226, 22227, 22229, 22230, 22232, 22233, 22236, 22243, 22245, 22246, 22247, 22248, 22249, 22250, 22252, 22254, 22255, 22258, 22259, 22262, 22263, 22264, 22267, 22268, 22272, 22273, 22274, 22277, 22279, 22283, 22284, 22285, 22286, 22287, 22288, 22289, 22290, 22291, 22292, 22293, 22294, 22295, 22296, 22297, 22298, 22299, 22301, 22302, 22304, 22305, 22306, 22308, 22309, 22310, 22311, 22315, 22321, 22322, 22324, 22325, 22326, 22327, 22328, 22332, 22333, 22335, 22337, 22339, 22340, 22341, 22342, 22344, 22345, 22347, 22354, 22355, 22356, 22357, 22358, 22360, 22361, 22370, 22371, 22373, 22375, 22380, 22382, 22384, 22385, 22386, 22388, 22389, 22392, 22393, 22394, 22397, 22398, 22399, 22400, 22401, 22407, 22408, 22409, 22410, 22413, 22414, 22415, 22416, 22417, 22420, 22421, 22422, 22423, 22424, 22425, 22426, 22428, 22429, 22430, 22431, 22437, 22440, 22442, 22444, 22447, 22448, 22449, 22451, 22453, 22454, 22455, 22457, 22458, 22459, 22460, 22461, 22462, 22463, 22464, 22465, 22468, 22469, 22470, 22471, 22472, 22473, 22474, 22476, 22477, 22480, 22481, 22483, 22486, 22487, 22491, 22492, 22494, 22497, 22498, 22499, 22501, 22502, 22503, 22504, 22505, 22506, 22507, 22508, 22510, 22512, 22513, 22514, 22515, 22517, 22518, 22519, 22523, 22524, 22526, 22527, 22529, 22531, 22532, 22533, 22536, 22537, 22538, 22540, 22542, 22543, 22544, 22546, 22547, 22548, 22550, 22551, 22552, 22554, 22555, 22556, 22557, 22559, 22562, 22563, 22565, 22566, 22567, 22568, 22569, 22571, 22572, 22573, 22574, 22575, 22577, 22578, 22579, 22580, 22582, 22583, 22584, 22585, 22586, 22587, 22588, 22589, 22590, 22591, 22592, 22593, 22594, 22595, 22597, 22598, 22599, 22600, 22601, 22602, 22603, 22606, 22607, 22608, 22610, 22611, 22613, 22614, 22615, 22617, 22618, 22619, 22620, 22621, 22623, 22624, 22625, 22626, 22627, 22628, 22630, 22631, 22632, 22633, 22634, 22637, 22638, 22639, 22640, 22641, 22642, 22643, 22644, 22645, 22646, 22647, 22648, 22649, 22650, 22651, 22652, 22653, 22655, 22658, 22660, 22662, 22663, 22664, 22666, 22667, 22668, 22669, 22670, 22671, 22672, 22673, 22676, 22677, 22678, 22679, 22680, 22683, 22684, 22685, 22688, 22689, 22690, 22691, 22692, 22693, 22694, 22695, 22698, 22699, 22700, 22701, 22702, 22703, 22704, 22705, 22706, 22707, 22708, 22709, 22710, 22711, 22712, 22713, 22714, 22715, 22717, 22718, 22719, 22720, 22722, 22723, 22724, 22726, 22727, 22728, 22729, 22730, 22731, 22732, 22733, 22734, 22735, 22736, 22738, 22739, 22740, 22742, 22743, 22744, 22745, 22746, 22747, 22748, 22749, 22750, 22751, 22752, 22753, 22754, 22755, 22757, 22758, 22759, 22760, 22761, 22762, 22765, 22767, 22769, 22770, 22772, 22773, 22775, 22776, 22778, 22779, 22780, 22781, 22782, 22783, 22784, 22785, 22787, 22789, 22790, 22792, 22793, 22794, 22795, 22796, 22798, 22800, 22801, 22802, 22803, 22807, 22808, 22811, 22813, 22814, 22816, 22817, 22818, 22819, 22822, 22824, 22828, 22832, 22834, 22835, 22837, 22838, 22843, 22845, 22846, 22847, 22848, 22851, 22853, 22854, 22858, 22860, 22861, 22864, 22866, 22867, 22873, 22875, 22876, 22877, 22878, 22879, 22881, 22883, 22884, 22886, 22887, 22888, 22889, 22890, 22891, 22892, 22893, 22894, 22895, 22896, 22897, 22898, 22901, 22903, 22906, 22907, 22908, 22910, 22911, 22912, 22917, 22921, 22923, 22924, 22926, 22927, 22928, 22929, 22932, 22933, 22936, 22938, 22939, 22940, 22941, 22943, 22944, 22945, 22946, 22950, 22951, 22956, 22957, 22960, 22961, 22963, 22964, 22965, 22966, 22967, 22968, 22970, 22972, 22973, 22975, 22976, 22977, 22978, 22979, 22980, 22981, 22983, 22984, 22985, 22988, 22989, 22990, 22991, 22997, 22998, 23001, 23003, 23006, 23007, 23008, 23009, 23010, 23012, 23014, 23015, 23017, 23018, 23019, 23021, 23022, 23023, 23024, 23025, 23026, 23027, 23028, 23029, 23030, 23031, 23032, 23034, 23036, 23037, 23038, 23040, 23042, 23050, 23051, 23053, 23054, 23055, 23056, 23058, 23060, 23061, 23062, 23063, 23065, 23066, 23067, 23069, 23070, 23073, 23074, 23076, 23078, 23079, 23080, 23082, 23083, 23084, 23085, 23086, 23087, 23088, 23091, 23093, 23095, 23096, 23097, 23098, 23099, 23101, 23102, 23103, 23105, 23106, 23107, 23108, 23109, 23111, 23112, 23115, 23116, 23117, 23118, 23119, 23120, 23121, 23122, 23123, 23124, 23126, 23127, 23128, 23129, 23131, 23132, 23133, 23134, 23135, 23136, 23137, 23139, 23140, 23141, 23142, 23144, 23145, 23147, 23148, 23149, 23150, 23151, 23152, 23153, 23154, 23155, 23160, 23161, 23163, 23164, 23165, 23166, 23168, 23169, 23170, 23171, 23172, 23173, 23174, 23175, 23176, 23177, 23178, 23179, 23180, 23181, 23182, 23183, 23184, 23185, 23187, 23188, 23189, 23190, 23191, 23192, 23193, 23196, 23197, 23198, 23199, 23200, 23201, 23202, 23203, 23204, 23205, 23206, 23207, 23208, 23209, 23211, 23212, 23213, 23214, 23215, 23216, 23217, 23220, 23222, 23223, 23225, 23226, 23227, 23228, 23229, 23231, 23232, 23235, 23236, 23237, 23238, 23239, 23240, 23242, 23243, 23245, 23246, 23247, 23248, 23249, 23251, 23253, 23255, 23257, 23258, 23259, 23261, 23262, 23263, 23266, 23268, 23269, 23271, 23272, 23274, 23276, 23277, 23278, 23279, 23280, 23282, 23283, 23284, 23285, 23286, 23287, 23288, 23289, 23290, 23291, 23292, 23293, 23294, 23295, 23296, 23297, 23298, 23299, 23300, 23301, 23302, 23303, 23304, 23306, 23307, 23308, 23309, 23310, 23311, 23312, 23313, 23314, 23315, 23316, 23317, 23320, 23321, 23322, 23323, 23324, 23325, 23326, 23327, 23328, 23329, 23330, 23331, 23332, 23333, 23334, 23335, 23336, 23337, 23338, 23339, 23340, 23341, 23342, 23343, 23344, 23345, 23347, 23349, 23350, 23352, 23353, 23354, 23355, 23356, 23357, 23358, 23359, 23361, 23362, 23363, 23364, 23365, 23366, 23367, 23368, 23369, 23370, 23371, 23372, 23373, 23374, 23375, 23378, 23382, 23390, 23392, 23393, 23399, 23400, 23403, 23405, 23406, 23407, 23410, 23412, 23414, 23415, 23416, 23417, 23419, 23420, 23422, 23423, 23426, 23430, 23434, 23437, 23438, 23440, 23441, 23442, 23444, 23446, 23455, 23463, 23464, 23465, 23468, 23469, 23470, 23471, 23473, 23474, 23479, 23482, 23483, 23484, 23488, 23489, 23491, 23496, 23497, 23498, 23499, 23501, 23502, 23503, 23505, 23508, 23509, 23510, 23511, 23512, 23513, 23514, 23515, 23516, 23520, 23522, 23523, 23526, 23527, 23529, 23530, 23531, 23532, 23533, 23535, 23537, 23538, 23539, 23540, 23541, 23542, 23543, 23549, 23550, 23552, 23554, 23555, 23557, 23559, 23560, 23563, 23564, 23565, 23566, 23568, 23570, 23571, 23575, 23577, 23579, 23582, 23583, 23584, 23585, 23587, 23590, 23592, 23593, 23594, 23595, 23597, 23598, 23599, 23600, 23602, 23603, 23605, 23606, 23607, 23619, 23620, 23622, 23623, 23628, 23629, 23634, 23635, 23636, 23638, 23639, 23640, 23642, 23643, 23644, 23645, 23647, 23650, 23652, 23655, 23656, 23657, 23658, 23659, 23660, 23661, 23664, 23666, 23667, 23668, 23669, 23670, 23671, 23672, 23675, 23676, 23677, 23678, 23680, 23683, 23684, 23685, 23686, 23687, 23689, 23690, 23691, 23694, 23695, 23698, 23699, 23701, 23709, 23710, 23711, 23712, 23713, 23716, 23717, 23718, 23719, 23720, 23722, 23726, 23727, 23728, 23730, 23732, 23734, 23737, 23738, 23739, 23740, 23742, 23744, 23746, 23747, 23749, 23750, 23751, 23752, 23753, 23754, 23756, 23757, 23758, 23759, 23760, 23761, 23763, 23764, 23765, 23766, 23767, 23768, 23770, 23771, 23772, 23773, 23774, 23775, 23776, 23778, 23779, 23783, 23785, 23787, 23788, 23790, 23791, 23793, 23794, 23795, 23796, 23797, 23798, 23799, 23800, 23801, 23802, 23804, 23805, 23806, 23807, 23808, 23809, 23812, 23813, 23816, 23817, 23818, 23819, 23820, 23821, 23823, 23824, 23825, 23826, 23827, 23829, 23831, 23832, 23833, 23834, 23836, 23837, 23839, 23840, 23841, 23842, 23843, 23845, 23848, 23850, 23851, 23852, 23855, 23856, 23857, 23858, 23859, 23861, 23862, 23863, 23864, 23865, 23866, 23867, 23868, 23871, 23872, 23873, 23874, 23875, 23876, 23877, 23878, 23880, 23881, 23885, 23886, 23887, 23888, 23889, 23890, 23891, 23892, 23893, 23894, 23895, 23897, 23898, 23900, 23902, 23903, 23904, 23905, 23906, 23907, 23908, 23909, 23910, 23911, 23912, 23914, 23917, 23918, 23920, 23921, 23922, 23923, 23925, 23926, 23927, 23928, 23929, 23930, 23931, 23932, 23933, 23934, 23935, 23936, 23937, 23939, 23940, 23941, 23942, 23943, 23944, 23945, 23946, 23947, 23948, 23949, 23950, 23951, 23952, 23953, 23954, 23955, 23956, 23957, 23958, 23959, 23960, 23962, 23963, 23964, 23966, 23967, 23968, 23969, 23970, 23971, 23972, 23973, 23974, 23975, 23976, 23977, 23978, 23979, 23980, 23981, 23982, 23983, 23984, 23985, 23986, 23987, 23988, 23989, 23990, 23992, 23993, 23994, 23995, 23996, 23997, 23998, 23999, 24e3, 24001, 24002, 24003, 24004, 24006, 24007, 24008, 24009, 24010, 24011, 24012, 24014, 24015, 24016, 24017, 24018, 24019, 24020, 24021, 24022, 24023, 24024, 24025, 24026, 24028, 24031, 24032, 24035, 24036, 24042, 24044, 24045, 24048, 24053, 24054, 24056, 24057, 24058, 24059, 24060, 24063, 24064, 24068, 24071, 24073, 24074, 24075, 24077, 24078, 24082, 24083, 24087, 24094, 24095, 24096, 24097, 24098, 24099, 24100, 24101, 24104, 24105, 24106, 24107, 24108, 24111, 24112, 24114, 24115, 24116, 24117, 24118, 24121, 24122, 24126, 24127, 24128, 24129, 24131, 24134, 24135, 24136, 24137, 24138, 24139, 24141, 24142, 24143, 24144, 24145, 24146, 24147, 24150, 24151, 24152, 24153, 24154, 24156, 24157, 24159, 24160, 24163, 24164, 24165, 24166, 24167, 24168, 24169, 24170, 24171, 24172, 24173, 24174, 24175, 24176, 24177, 24181, 24183, 24185, 24190, 24193, 24194, 24195, 24197, 24200, 24201, 24204, 24205, 24206, 24210, 24216, 24219, 24221, 24225, 24226, 24227, 24228, 24232, 24233, 24234, 24235, 24236, 24238, 24239, 24240, 24241, 24242, 24244, 24250, 24251, 24252, 24253, 24255, 24256, 24257, 24258, 24259, 24260, 24261, 24262, 24263, 24264, 24267, 24268, 24269, 24270, 24271, 24272, 24276, 24277, 24279, 24280, 24281, 24282, 24284, 24285, 24286, 24287, 24288, 24289, 24290, 24291, 24292, 24293, 24294, 24295, 24297, 24299, 24300, 24301, 24302, 24303, 24304, 24305, 24306, 24307, 24309, 24312, 24313, 24315, 24316, 24317, 24325, 24326, 24327, 24329, 24332, 24333, 24334, 24336, 24338, 24340, 24342, 24345, 24346, 24348, 24349, 24350, 24353, 24354, 24355, 24356, 24360, 24363, 24364, 24366, 24368, 24370, 24371, 24372, 24373, 24374, 24375, 24376, 24379, 24381, 24382, 24383, 24385, 24386, 24387, 24388, 24389, 24390, 24391, 24392, 24393, 24394, 24395, 24396, 24397, 24398, 24399, 24401, 24404, 24409, 24410, 24411, 24412, 24414, 24415, 24416, 24419, 24421, 24423, 24424, 24427, 24430, 24431, 24434, 24436, 24437, 24438, 24440, 24442, 24445, 24446, 24447, 24451, 24454, 24461, 24462, 24463, 24465, 24467, 24468, 24470, 24474, 24475, 24477, 24478, 24479, 24480, 24482, 24483, 24484, 24485, 24486, 24487, 24489, 24491, 24492, 24495, 24496, 24497, 24498, 24499, 24500, 24502, 24504, 24505, 24506, 24507, 24510, 24511, 24512, 24513, 24514, 24519, 24520, 24522, 24523, 24526, 24531, 24532, 24533, 24538, 24539, 24540, 24542, 24543, 24546, 24547, 24549, 24550, 24552, 24553, 24556, 24559, 24560, 24562, 24563, 24564, 24566, 24567, 24569, 24570, 24572, 24583, 24584, 24585, 24587, 24588, 24592, 24593, 24595, 24599, 24600, 24602, 24606, 24607, 24610, 24611, 24612, 24620, 24621, 24622, 24624, 24625, 24626, 24627, 24628, 24630, 24631, 24632, 24633, 24634, 24637, 24638, 24640, 24644, 24645, 24646, 24647, 24648, 24649, 24650, 24652, 24654, 24655, 24657, 24659, 24660, 24662, 24663, 24664, 24667, 24668, 24670, 24671, 24672, 24673, 24677, 24678, 24686, 24689, 24690, 24692, 24693, 24695, 24702, 24704, 24705, 24706, 24709, 24710, 24711, 24712, 24714, 24715, 24718, 24719, 24720, 24721, 24723, 24725, 24727, 24728, 24729, 24732, 24734, 24737, 24738, 24740, 24741, 24743, 24745, 24746, 24750, 24752, 24755, 24757, 24758, 24759, 24761, 24762, 24765, 24766, 24767, 24768, 24769, 24770, 24771, 24772, 24775, 24776, 24777, 24780, 24781, 24782, 24783, 24784, 24786, 24787, 24788, 24790, 24791, 24793, 24795, 24798, 24801, 24802, 24803, 24804, 24805, 24810, 24817, 24818, 24821, 24823, 24824, 24827, 24828, 24829, 24830, 24831, 24834, 24835, 24836, 24837, 24839, 24842, 24843, 24844, 24848, 24849, 24850, 24851, 24852, 24854, 24855, 24856, 24857, 24859, 24860, 24861, 24862, 24865, 24866, 24869, 24872, 24873, 24874, 24876, 24877, 24878, 24879, 24880, 24881, 24882, 24883, 24884, 24885, 24886, 24887, 24888, 24889, 24890, 24891, 24892, 24893, 24894, 24896, 24897, 24898, 24899, 24900, 24901, 24902, 24903, 24905, 24907, 24909, 24911, 24912, 24914, 24915, 24916, 24918, 24919, 24920, 24921, 24922, 24923, 24924, 24926, 24927, 24928, 24929, 24931, 24932, 24933, 24934, 24937, 24938, 24939, 24940, 24941, 24942, 24943, 24945, 24946, 24947, 24948, 24950, 24952, 24953, 24954, 24955, 24956, 24957, 24958, 24959, 24960, 24961, 24962, 24963, 24964, 24965, 24966, 24967, 24968, 24969, 24970, 24972, 24973, 24975, 24976, 24977, 24978, 24979, 24981, 24982, 24983, 24984, 24985, 24986, 24987, 24988, 24990, 24991, 24992, 24993, 24994, 24995, 24996, 24997, 24998, 25002, 25003, 25005, 25006, 25007, 25008, 25009, 25010, 25011, 25012, 25013, 25014, 25016, 25017, 25018, 25019, 25020, 25021, 25023, 25024, 25025, 25027, 25028, 25029, 25030, 25031, 25033, 25036, 25037, 25038, 25039, 25040, 25043, 25045, 25046, 25047, 25048, 25049, 25050, 25051, 25052, 25053, 25054, 25055, 25056, 25057, 25058, 25059, 25060, 25061, 25063, 25064, 25065, 25066, 25067, 25068, 25069, 25070, 25071, 25072, 25073, 25074, 25075, 25076, 25078, 25079, 25080, 25081, 25082, 25083, 25084, 25085, 25086, 25088, 25089, 25090, 25091, 25092, 25093, 25095, 25097, 25107, 25108, 25113, 25116, 25117, 25118, 25120, 25123, 25126, 25127, 25128, 25129, 25131, 25133, 25135, 25136, 25137, 25138, 25141, 25142, 25144, 25145, 25146, 25147, 25148, 25154, 25156, 25157, 25158, 25162, 25167, 25168, 25173, 25174, 25175, 25177, 25178, 25180, 25181, 25182, 25183, 25184, 25185, 25186, 25188, 25189, 25192, 25201, 25202, 25204, 25205, 25207, 25208, 25210, 25211, 25213, 25217, 25218, 25219, 25221, 25222, 25223, 25224, 25227, 25228, 25229, 25230, 25231, 25232, 25236, 25241, 25244, 25245, 25246, 25251, 25254, 25255, 25257, 25258, 25261, 25262, 25263, 25264, 25266, 25267, 25268, 25270, 25271, 25272, 25274, 25278, 25280, 25281, 25283, 25291, 25295, 25297, 25301, 25309, 25310, 25312, 25313, 25316, 25322, 25323, 25328, 25330, 25333, 25336, 25337, 25338, 25339, 25344, 25347, 25348, 25349, 25350, 25354, 25355, 25356, 25357, 25359, 25360, 25362, 25363, 25364, 25365, 25367, 25368, 25369, 25372, 25382, 25383, 25385, 25388, 25389, 25390, 25392, 25393, 25395, 25396, 25397, 25398, 25399, 25400, 25403, 25404, 25406, 25407, 25408, 25409, 25412, 25415, 25416, 25418, 25425, 25426, 25427, 25428, 25430, 25431, 25432, 25433, 25434, 25435, 25436, 25437, 25440, 25444, 25445, 25446, 25448, 25450, 25451, 25452, 25455, 25456, 25458, 25459, 25460, 25461, 25464, 25465, 25468, 25469, 25470, 25471, 25473, 25475, 25476, 25477, 25478, 25483, 25485, 25489, 25491, 25492, 25493, 25495, 25497, 25498, 25499, 25500, 25501, 25502, 25503, 25505, 25508, 25510, 25515, 25519, 25521, 25522, 25525, 25526, 25529, 25531, 25533, 25535, 25536, 25537, 25538, 25539, 25541, 25543, 25544, 25546, 25547, 25548, 25553, 25555, 25556, 25557, 25559, 25560, 25561, 25562, 25563, 25564, 25565, 25567, 25570, 25572, 25573, 25574, 25575, 25576, 25579, 25580, 25582, 25583, 25584, 25585, 25587, 25589, 25591, 25593, 25594, 25595, 25596, 25598, 25603, 25604, 25606, 25607, 25608, 25609, 25610, 25613, 25614, 25617, 25618, 25621, 25622, 25623, 25624, 25625, 25626, 25629, 25631, 25634, 25635, 25636, 25637, 25639, 25640, 25641, 25643, 25646, 25647, 25648, 25649, 25650, 25651, 25653, 25654, 25655, 25656, 25657, 25659, 25660, 25662, 25664, 25666, 25667, 25673, 25675, 25676, 25677, 25678, 25679, 25680, 25681, 25683, 25685, 25686, 25687, 25689, 25690, 25691, 25692, 25693, 25695, 25696, 25697, 25698, 25699, 25700, 25701, 25702, 25704, 25706, 25707, 25708, 25710, 25711, 25712, 25713, 25714, 25715, 25716, 25717, 25718, 25719, 25723, 25724, 25725, 25726, 25727, 25728, 25729, 25731, 25734, 25736, 25737, 25738, 25739, 25740, 25741, 25742, 25743, 25744, 25747, 25748, 25751, 25752, 25754, 25755, 25756, 25757, 25759, 25760, 25761, 25762, 25763, 25765, 25766, 25767, 25768, 25770, 25771, 25775, 25777, 25778, 25779, 25780, 25782, 25785, 25787, 25789, 25790, 25791, 25793, 25795, 25796, 25798, 25799, 25800, 25801, 25802, 25803, 25804, 25807, 25809, 25811, 25812, 25813, 25814, 25817, 25818, 25819, 25820, 25821, 25823, 25824, 25825, 25827, 25829, 25831, 25832, 25833, 25834, 25835, 25836, 25837, 25838, 25839, 25840, 25841, 25842, 25843, 25844, 25845, 25846, 25847, 25848, 25849, 25850, 25851, 25852, 25853, 25854, 25855, 25857, 25858, 25859, 25860, 25861, 25862, 25863, 25864, 25866, 25867, 25868, 25869, 25870, 25871, 25872, 25873, 25875, 25876, 25877, 25878, 25879, 25881, 25882, 25883, 25884, 25885, 25886, 25887, 25888, 25889, 25890, 25891, 25892, 25894, 25895, 25896, 25897, 25898, 25900, 25901, 25904, 25905, 25906, 25907, 25911, 25914, 25916, 25917, 25920, 25921, 25922, 25923, 25924, 25926, 25927, 25930, 25931, 25933, 25934, 25936, 25938, 25939, 25940, 25943, 25944, 25946, 25948, 25951, 25952, 25953, 25956, 25957, 25959, 25960, 25961, 25962, 25965, 25966, 25967, 25969, 25971, 25973, 25974, 25976, 25977, 25978, 25979, 25980, 25981, 25982, 25983, 25984, 25985, 25986, 25987, 25988, 25989, 25990, 25992, 25993, 25994, 25997, 25998, 25999, 26002, 26004, 26005, 26006, 26008, 26010, 26013, 26014, 26016, 26018, 26019, 26022, 26024, 26026, 26028, 26030, 26033, 26034, 26035, 26036, 26037, 26038, 26039, 26040, 26042, 26043, 26046, 26047, 26048, 26050, 26055, 26056, 26057, 26058, 26061, 26064, 26065, 26067, 26068, 26069, 26072, 26073, 26074, 26075, 26076, 26077, 26078, 26079, 26081, 26083, 26084, 26090, 26091, 26098, 26099, 26100, 26101, 26104, 26105, 26107, 26108, 26109, 26110, 26111, 26113, 26116, 26117, 26119, 26120, 26121, 26123, 26125, 26128, 26129, 26130, 26134, 26135, 26136, 26138, 26139, 26140, 26142, 26145, 26146, 26147, 26148, 26150, 26153, 26154, 26155, 26156, 26158, 26160, 26162, 26163, 26167, 26168, 26169, 26170, 26171, 26173, 26175, 26176, 26178, 26180, 26181, 26182, 26183, 26184, 26185, 26186, 26189, 26190, 26192, 26193, 26200, 26201, 26203, 26204, 26205, 26206, 26208, 26210, 26211, 26213, 26215, 26217, 26218, 26219, 26220, 26221, 26225, 26226, 26227, 26229, 26232, 26233, 26235, 26236, 26237, 26239, 26240, 26241, 26243, 26245, 26246, 26248, 26249, 26250, 26251, 26253, 26254, 26255, 26256, 26258, 26259, 26260, 26261, 26264, 26265, 26266, 26267, 26268, 26270, 26271, 26272, 26273, 26274, 26275, 26276, 26277, 26278, 26281, 26282, 26283, 26284, 26285, 26287, 26288, 26289, 26290, 26291, 26293, 26294, 26295, 26296, 26298, 26299, 26300, 26301, 26303, 26304, 26305, 26306, 26307, 26308, 26309, 26310, 26311, 26312, 26313, 26314, 26315, 26316, 26317, 26318, 26319, 26320, 26321, 26322, 26323, 26324, 26325, 26326, 26327, 26328, 26330, 26334, 26335, 26336, 26337, 26338, 26339, 26340, 26341, 26343, 26344, 26346, 26347, 26348, 26349, 26350, 26351, 26353, 26357, 26358, 26360, 26362, 26363, 26365, 26369, 26370, 26371, 26372, 26373, 26374, 26375, 26380, 26382, 26383, 26385, 26386, 26387, 26390, 26392, 26393, 26394, 26396, 26398, 26400, 26401, 26402, 26403, 26404, 26405, 26407, 26409, 26414, 26416, 26418, 26419, 26422, 26423, 26424, 26425, 26427, 26428, 26430, 26431, 26433, 26436, 26437, 26439, 26442, 26443, 26445, 26450, 26452, 26453, 26455, 26456, 26457, 26458, 26459, 26461, 26466, 26467, 26468, 26470, 26471, 26475, 26476, 26478, 26481, 26484, 26486, 26488, 26489, 26490, 26491, 26493, 26496, 26498, 26499, 26501, 26502, 26504, 26506, 26508, 26509, 26510, 26511, 26513, 26514, 26515, 26516, 26518, 26521, 26523, 26527, 26528, 26529, 26532, 26534, 26537, 26540, 26542, 26545, 26546, 26548, 26553, 26554, 26555, 26556, 26557, 26558, 26559, 26560, 26562, 26565, 26566, 26567, 26568, 26569, 26570, 26571, 26572, 26573, 26574, 26581, 26582, 26583, 26587, 26591, 26593, 26595, 26596, 26598, 26599, 26600, 26602, 26603, 26605, 26606, 26610, 26613, 26614, 26615, 26616, 26617, 26618, 26619, 26620, 26622, 26625, 26626, 26627, 26628, 26630, 26637, 26640, 26642, 26644, 26645, 26648, 26649, 26650, 26651, 26652, 26654, 26655, 26656, 26658, 26659, 26660, 26661, 26662, 26663, 26664, 26667, 26668, 26669, 26670, 26671, 26672, 26673, 26676, 26677, 26678, 26682, 26683, 26687, 26695, 26699, 26701, 26703, 26706, 26710, 26711, 26712, 26713, 26714, 26715, 26716, 26717, 26718, 26719, 26730, 26732, 26733, 26734, 26735, 26736, 26737, 26738, 26739, 26741, 26744, 26745, 26746, 26747, 26748, 26749, 26750, 26751, 26752, 26754, 26756, 26759, 26760, 26761, 26762, 26763, 26764, 26765, 26766, 26768, 26769, 26770, 26772, 26773, 26774, 26776, 26777, 26778, 26779, 26780, 26781, 26782, 26783, 26784, 26785, 26787, 26788, 26789, 26793, 26794, 26795, 26796, 26798, 26801, 26802, 26804, 26806, 26807, 26808, 26809, 26810, 26811, 26812, 26813, 26814, 26815, 26817, 26819, 26820, 26821, 26822, 26823, 26824, 26826, 26828, 26830, 26831, 26832, 26833, 26835, 26836, 26838, 26839, 26841, 26843, 26844, 26845, 26846, 26847, 26849, 26850, 26852, 26853, 26854, 26855, 26856, 26857, 26858, 26859, 26860, 26861, 26863, 26866, 26867, 26868, 26870, 26871, 26872, 26875, 26877, 26878, 26879, 26880, 26882, 26883, 26884, 26886, 26887, 26888, 26889, 26890, 26892, 26895, 26897, 26899, 26900, 26901, 26902, 26903, 26904, 26905, 26906, 26907, 26908, 26909, 26910, 26913, 26914, 26915, 26917, 26918, 26919, 26920, 26921, 26922, 26923, 26924, 26926, 26927, 26929, 26930, 26931, 26933, 26934, 26935, 26936, 26938, 26939, 26940, 26942, 26944, 26945, 26947, 26948, 26949, 26950, 26951, 26952, 26953, 26954, 26955, 26956, 26957, 26958, 26959, 26960, 26961, 26962, 26963, 26965, 26966, 26968, 26969, 26971, 26972, 26975, 26977, 26978, 26980, 26981, 26983, 26984, 26985, 26986, 26988, 26989, 26991, 26992, 26994, 26995, 26996, 26997, 26998, 27002, 27003, 27005, 27006, 27007, 27009, 27011, 27013, 27018, 27019, 27020, 27022, 27023, 27024, 27025, 27026, 27027, 27030, 27031, 27033, 27034, 27037, 27038, 27039, 27040, 27041, 27042, 27043, 27044, 27045, 27046, 27049, 27050, 27052, 27054, 27055, 27056, 27058, 27059, 27061, 27062, 27064, 27065, 27066, 27068, 27069, 27070, 27071, 27072, 27074, 27075, 27076, 27077, 27078, 27079, 27080, 27081, 27083, 27085, 27087, 27089, 27090, 27091, 27093, 27094, 27095, 27096, 27097, 27098, 27100, 27101, 27102, 27105, 27106, 27107, 27108, 27109, 27110, 27111, 27112, 27113, 27114, 27115, 27116, 27118, 27119, 27120, 27121, 27123, 27124, 27125, 27126, 27127, 27128, 27129, 27130, 27131, 27132, 27134, 27136, 27137, 27138, 27139, 27140, 27141, 27142, 27143, 27144, 27145, 27147, 27148, 27149, 27150, 27151, 27152, 27153, 27154, 27155, 27156, 27157, 27158, 27161, 27162, 27163, 27164, 27165, 27166, 27168, 27170, 27171, 27172, 27173, 27174, 27175, 27177, 27179, 27180, 27181, 27182, 27184, 27186, 27187, 27188, 27190, 27191, 27192, 27193, 27194, 27195, 27196, 27199, 27200, 27201, 27202, 27203, 27205, 27206, 27208, 27209, 27210, 27211, 27212, 27213, 27214, 27215, 27217, 27218, 27219, 27220, 27221, 27222, 27223, 27226, 27228, 27229, 27230, 27231, 27232, 27234, 27235, 27236, 27238, 27239, 27240, 27241, 27242, 27243, 27244, 27245, 27246, 27247, 27248, 27250, 27251, 27252, 27253, 27254, 27255, 27256, 27258, 27259, 27261, 27262, 27263, 27265, 27266, 27267, 27269, 27270, 27271, 27272, 27273, 27274, 27275, 27276, 27277, 27279, 27282, 27283, 27284, 27285, 27286, 27288, 27289, 27290, 27291, 27292, 27293, 27294, 27295, 27297, 27298, 27299, 27300, 27301, 27302, 27303, 27304, 27306, 27309, 27310, 27311, 27312, 27313, 27314, 27315, 27316, 27317, 27318, 27319, 27320, 27321, 27322, 27323, 27324, 27325, 27326, 27327, 27328, 27329, 27330, 27331, 27332, 27333, 27334, 27335, 27336, 27337, 27338, 27339, 27340, 27341, 27342, 27343, 27344, 27345, 27346, 27347, 27348, 27349, 27350, 27351, 27352, 27353, 27354, 27355, 27356, 27357, 27358, 27359, 27360, 27361, 27362, 27363, 27364, 27365, 27366, 27367, 27368, 27369, 27370, 27371, 27372, 27373, 27374, 27375, 27376, 27377, 27378, 27379, 27380, 27381, 27382, 27383, 27384, 27385, 27386, 27387, 27388, 27389, 27390, 27391, 27392, 27393, 27394, 27395, 27396, 27397, 27398, 27399, 27400, 27401, 27402, 27403, 27404, 27405, 27406, 27407, 27408, 27409, 27410, 27411, 27412, 27413, 27414, 27415, 27416, 27417, 27418, 27419, 27420, 27421, 27422, 27423, 27429, 27430, 27432, 27433, 27434, 27435, 27436, 27437, 27438, 27439, 27440, 27441, 27443, 27444, 27445, 27446, 27448, 27451, 27452, 27453, 27455, 27456, 27457, 27458, 27460, 27461, 27464, 27466, 27467, 27469, 27470, 27471, 27472, 27473, 27474, 27475, 27476, 27477, 27478, 27479, 27480, 27482, 27483, 27484, 27485, 27486, 27487, 27488, 27489, 27496, 27497, 27499, 27500, 27501, 27502, 27503, 27504, 27505, 27506, 27507, 27508, 27509, 27510, 27511, 27512, 27514, 27517, 27518, 27519, 27520, 27525, 27528, 27532, 27534, 27535, 27536, 27537, 27540, 27541, 27543, 27544, 27545, 27548, 27549, 27550, 27551, 27552, 27554, 27555, 27556, 27557, 27558, 27559, 27560, 27561, 27563, 27564, 27565, 27566, 27567, 27568, 27569, 27570, 27574, 27576, 27577, 27578, 27579, 27580, 27581, 27582, 27584, 27587, 27588, 27590, 27591, 27592, 27593, 27594, 27596, 27598, 27600, 27601, 27608, 27610, 27612, 27613, 27614, 27615, 27616, 27618, 27619, 27620, 27621, 27622, 27623, 27624, 27625, 27628, 27629, 27630, 27632, 27633, 27634, 27636, 27638, 27639, 27640, 27642, 27643, 27644, 27646, 27647, 27648, 27649, 27650, 27651, 27652, 27656, 27657, 27658, 27659, 27660, 27662, 27666, 27671, 27676, 27677, 27678, 27680, 27683, 27685, 27691, 27692, 27693, 27697, 27699, 27702, 27703, 27705, 27706, 27707, 27708, 27710, 27711, 27715, 27716, 27717, 27720, 27723, 27724, 27725, 27726, 27727, 27729, 27730, 27731, 27734, 27736, 27737, 27738, 27746, 27747, 27749, 27750, 27751, 27755, 27756, 27757, 27758, 27759, 27761, 27763, 27765, 27767, 27768, 27770, 27771, 27772, 27775, 27776, 27780, 27783, 27786, 27787, 27789, 27790, 27793, 27794, 27797, 27798, 27799, 27800, 27802, 27804, 27805, 27806, 27808, 27810, 27816, 27820, 27823, 27824, 27828, 27829, 27830, 27831, 27834, 27840, 27841, 27842, 27843, 27846, 27847, 27848, 27851, 27853, 27854, 27855, 27857, 27858, 27864, 27865, 27866, 27868, 27869, 27871, 27876, 27878, 27879, 27881, 27884, 27885, 27890, 27892, 27897, 27903, 27904, 27906, 27907, 27909, 27910, 27912, 27913, 27914, 27917, 27919, 27920, 27921, 27923, 27924, 27925, 27926, 27928, 27932, 27933, 27935, 27936, 27937, 27938, 27939, 27940, 27942, 27944, 27945, 27948, 27949, 27951, 27952, 27956, 27958, 27959, 27960, 27962, 27967, 27968, 27970, 27972, 27977, 27980, 27984, 27989, 27990, 27991, 27992, 27995, 27997, 27999, 28001, 28002, 28004, 28005, 28007, 28008, 28011, 28012, 28013, 28016, 28017, 28018, 28019, 28021, 28022, 28025, 28026, 28027, 28029, 28030, 28031, 28032, 28033, 28035, 28036, 28038, 28039, 28042, 28043, 28045, 28047, 28048, 28050, 28054, 28055, 28056, 28057, 28058, 28060, 28066, 28069, 28076, 28077, 28080, 28081, 28083, 28084, 28086, 28087, 28089, 28090, 28091, 28092, 28093, 28094, 28097, 28098, 28099, 28104, 28105, 28106, 28109, 28110, 28111, 28112, 28114, 28115, 28116, 28117, 28119, 28122, 28123, 28124, 28127, 28130, 28131, 28133, 28135, 28136, 28137, 28138, 28141, 28143, 28144, 28146, 28148, 28149, 28150, 28152, 28154, 28157, 28158, 28159, 28160, 28161, 28162, 28163, 28164, 28166, 28167, 28168, 28169, 28171, 28175, 28178, 28179, 28181, 28184, 28185, 28187, 28188, 28190, 28191, 28194, 28198, 28199, 28200, 28202, 28204, 28206, 28208, 28209, 28211, 28213, 28214, 28215, 28217, 28219, 28220, 28221, 28222, 28223, 28224, 28225, 28226, 28229, 28230, 28231, 28232, 28233, 28234, 28235, 28236, 28239, 28240, 28241, 28242, 28245, 28247, 28249, 28250, 28252, 28253, 28254, 28256, 28257, 28258, 28259, 28260, 28261, 28262, 28263, 28264, 28265, 28266, 28268, 28269, 28271, 28272, 28273, 28274, 28275, 28276, 28277, 28278, 28279, 28280, 28281, 28282, 28283, 28284, 28285, 28288, 28289, 28290, 28292, 28295, 28296, 28298, 28299, 28300, 28301, 28302, 28305, 28306, 28307, 28308, 28309, 28310, 28311, 28313, 28314, 28315, 28317, 28318, 28320, 28321, 28323, 28324, 28326, 28328, 28329, 28331, 28332, 28333, 28334, 28336, 28339, 28341, 28344, 28345, 28348, 28350, 28351, 28352, 28355, 28356, 28357, 28358, 28360, 28361, 28362, 28364, 28365, 28366, 28368, 28370, 28374, 28376, 28377, 28379, 28380, 28381, 28387, 28391, 28394, 28395, 28396, 28397, 28398, 28399, 28400, 28401, 28402, 28403, 28405, 28406, 28407, 28408, 28410, 28411, 28412, 28413, 28414, 28415, 28416, 28417, 28419, 28420, 28421, 28423, 28424, 28426, 28427, 28428, 28429, 28430, 28432, 28433, 28434, 28438, 28439, 28440, 28441, 28442, 28443, 28444, 28445, 28446, 28447, 28449, 28450, 28451, 28453, 28454, 28455, 28456, 28460, 28462, 28464, 28466, 28468, 28469, 28471, 28472, 28473, 28474, 28475, 28476, 28477, 28479, 28480, 28481, 28482, 28483, 28484, 28485, 28488, 28489, 28490, 28492, 28494, 28495, 28496, 28497, 28498, 28499, 28500, 28501, 28502, 28503, 28505, 28506, 28507, 28509, 28511, 28512, 28513, 28515, 28516, 28517, 28519, 28520, 28521, 28522, 28523, 28524, 28527, 28528, 28529, 28531, 28533, 28534, 28535, 28537, 28539, 28541, 28542, 28543, 28544, 28545, 28546, 28547, 28549, 28550, 28551, 28554, 28555, 28559, 28560, 28561, 28562, 28563, 28564, 28565, 28566, 28567, 28568, 28569, 28570, 28571, 28573, 28574, 28575, 28576, 28578, 28579, 28580, 28581, 28582, 28584, 28585, 28586, 28587, 28588, 28589, 28590, 28591, 28592, 28593, 28594, 28596, 28597, 28599, 28600, 28602, 28603, 28604, 28605, 28606, 28607, 28609, 28611, 28612, 28613, 28614, 28615, 28616, 28618, 28619, 28620, 28621, 28622, 28623, 28624, 28627, 28628, 28629, 28630, 28631, 28632, 28633, 28634, 28635, 28636, 28637, 28639, 28642, 28643, 28644, 28645, 28646, 28647, 28648, 28649, 28650, 28651, 28652, 28653, 28656, 28657, 28658, 28659, 28660, 28661, 28662, 28663, 28664, 28665, 28666, 28667, 28668, 28669, 28670, 28671, 28672, 28673, 28674, 28675, 28676, 28677, 28678, 28679, 28680, 28681, 28682, 28683, 28684, 28685, 28686, 28687, 28688, 28690, 28691, 28692, 28693, 28694, 28695, 28696, 28697, 28700, 28701, 28702, 28703, 28704, 28705, 28706, 28708, 28709, 28710, 28711, 28712, 28713, 28714, 28715, 28716, 28717, 28718, 28719, 28720, 28721, 28722, 28723, 28724, 28726, 28727, 28728, 28730, 28731, 28732, 28733, 28734, 28735, 28736, 28737, 28738, 28739, 28740, 28741, 28742, 28743, 28744, 28745, 28746, 28747, 28749, 28750, 28752, 28753, 28754, 28755, 28756, 28757, 28758, 28759, 28760, 28761, 28762, 28763, 28764, 28765, 28767, 28768, 28769, 28770, 28771, 28772, 28773, 28774, 28775, 28776, 28777, 28778, 28782, 28785, 28786, 28787, 28788, 28791, 28793, 28794, 28795, 28797, 28801, 28802, 28803, 28804, 28806, 28807, 28808, 28811, 28812, 28813, 28815, 28816, 28817, 28819, 28823, 28824, 28826, 28827, 28830, 28831, 28832, 28833, 28834, 28835, 28836, 28837, 28838, 28839, 28840, 28841, 28842, 28848, 28850, 28852, 28853, 28854, 28858, 28862, 28863, 28868, 28869, 28870, 28871, 28873, 28875, 28876, 28877, 28878, 28879, 28880, 28881, 28882, 28883, 28884, 28885, 28886, 28887, 28890, 28892, 28893, 28894, 28896, 28897, 28898, 28899, 28901, 28906, 28910, 28912, 28913, 28914, 28915, 28916, 28917, 28918, 28920, 28922, 28923, 28924, 28926, 28927, 28928, 28929, 28930, 28931, 28932, 28933, 28934, 28935, 28936, 28939, 28940, 28941, 28942, 28943, 28945, 28946, 28948, 28951, 28955, 28956, 28957, 28958, 28959, 28960, 28961, 28962, 28963, 28964, 28965, 28967, 28968, 28969, 28970, 28971, 28972, 28973, 28974, 28978, 28979, 28980, 28981, 28983, 28984, 28985, 28986, 28987, 28988, 28989, 28990, 28991, 28992, 28993, 28994, 28995, 28996, 28998, 28999, 29e3, 29001, 29003, 29005, 29007, 29008, 29009, 29010, 29011, 29012, 29013, 29014, 29015, 29016, 29017, 29018, 29019, 29021, 29023, 29024, 29025, 29026, 29027, 29029, 29033, 29034, 29035, 29036, 29037, 29039, 29040, 29041, 29044, 29045, 29046, 29047, 29049, 29051, 29052, 29054, 29055, 29056, 29057, 29058, 29059, 29061, 29062, 29063, 29064, 29065, 29067, 29068, 29069, 29070, 29072, 29073, 29074, 29075, 29077, 29078, 29079, 29082, 29083, 29084, 29085, 29086, 29089, 29090, 29091, 29092, 29093, 29094, 29095, 29097, 29098, 29099, 29101, 29102, 29103, 29104, 29105, 29106, 29108, 29110, 29111, 29112, 29114, 29115, 29116, 29117, 29118, 29119, 29120, 29121, 29122, 29124, 29125, 29126, 29127, 29128, 29129, 29130, 29131, 29132, 29133, 29135, 29136, 29137, 29138, 29139, 29142, 29143, 29144, 29145, 29146, 29147, 29148, 29149, 29150, 29151, 29153, 29154, 29155, 29156, 29158, 29160, 29161, 29162, 29163, 29164, 29165, 29167, 29168, 29169, 29170, 29171, 29172, 29173, 29174, 29175, 29176, 29178, 29179, 29180, 29181, 29182, 29183, 29184, 29185, 29186, 29187, 29188, 29189, 29191, 29192, 29193, 29194, 29195, 29196, 29197, 29198, 29199, 29200, 29201, 29202, 29203, 29204, 29205, 29206, 29207, 29208, 29209, 29210, 29211, 29212, 29214, 29215, 29216, 29217, 29218, 29219, 29220, 29221, 29222, 29223, 29225, 29227, 29229, 29230, 29231, 29234, 29235, 29236, 29242, 29244, 29246, 29248, 29249, 29250, 29251, 29252, 29253, 29254, 29257, 29258, 29259, 29262, 29263, 29264, 29265, 29267, 29268, 29269, 29271, 29272, 29274, 29276, 29278, 29280, 29283, 29284, 29285, 29288, 29290, 29291, 29292, 29293, 29296, 29297, 29299, 29300, 29302, 29303, 29304, 29307, 29308, 29309, 29314, 29315, 29317, 29318, 29319, 29320, 29321, 29324, 29326, 29328, 29329, 29331, 29332, 29333, 29334, 29335, 29336, 29337, 29338, 29339, 29340, 29341, 29342, 29344, 29345, 29346, 29347, 29348, 29349, 29350, 29351, 29352, 29353, 29354, 29355, 29358, 29361, 29362, 29363, 29365, 29370, 29371, 29372, 29373, 29374, 29375, 29376, 29381, 29382, 29383, 29385, 29386, 29387, 29388, 29391, 29393, 29395, 29396, 29397, 29398, 29400, 29402, 29403, 58566, 58567, 58568, 58569, 58570, 58571, 58572, 58573, 58574, 58575, 58576, 58577, 58578, 58579, 58580, 58581, 58582, 58583, 58584, 58585, 58586, 58587, 58588, 58589, 58590, 58591, 58592, 58593, 58594, 58595, 58596, 58597, 58598, 58599, 58600, 58601, 58602, 58603, 58604, 58605, 58606, 58607, 58608, 58609, 58610, 58611, 58612, 58613, 58614, 58615, 58616, 58617, 58618, 58619, 58620, 58621, 58622, 58623, 58624, 58625, 58626, 58627, 58628, 58629, 58630, 58631, 58632, 58633, 58634, 58635, 58636, 58637, 58638, 58639, 58640, 58641, 58642, 58643, 58644, 58645, 58646, 58647, 58648, 58649, 58650, 58651, 58652, 58653, 58654, 58655, 58656, 58657, 58658, 58659, 58660, 58661, 12288, 12289, 12290, 183, 713, 711, 168, 12291, 12293, 8212, 65374, 8214, 8230, 8216, 8217, 8220, 8221, 12308, 12309, 12296, 12297, 12298, 12299, 12300, 12301, 12302, 12303, 12310, 12311, 12304, 12305, 177, 215, 247, 8758, 8743, 8744, 8721, 8719, 8746, 8745, 8712, 8759, 8730, 8869, 8741, 8736, 8978, 8857, 8747, 8750, 8801, 8780, 8776, 8765, 8733, 8800, 8814, 8815, 8804, 8805, 8734, 8757, 8756, 9794, 9792, 176, 8242, 8243, 8451, 65284, 164, 65504, 65505, 8240, 167, 8470, 9734, 9733, 9675, 9679, 9678, 9671, 9670, 9633, 9632, 9651, 9650, 8251, 8594, 8592, 8593, 8595, 12307, 58662, 58663, 58664, 58665, 58666, 58667, 58668, 58669, 58670, 58671, 58672, 58673, 58674, 58675, 58676, 58677, 58678, 58679, 58680, 58681, 58682, 58683, 58684, 58685, 58686, 58687, 58688, 58689, 58690, 58691, 58692, 58693, 58694, 58695, 58696, 58697, 58698, 58699, 58700, 58701, 58702, 58703, 58704, 58705, 58706, 58707, 58708, 58709, 58710, 58711, 58712, 58713, 58714, 58715, 58716, 58717, 58718, 58719, 58720, 58721, 58722, 58723, 58724, 58725, 58726, 58727, 58728, 58729, 58730, 58731, 58732, 58733, 58734, 58735, 58736, 58737, 58738, 58739, 58740, 58741, 58742, 58743, 58744, 58745, 58746, 58747, 58748, 58749, 58750, 58751, 58752, 58753, 58754, 58755, 58756, 58757, 8560, 8561, 8562, 8563, 8564, 8565, 8566, 8567, 8568, 8569, 59238, 59239, 59240, 59241, 59242, 59243, 9352, 9353, 9354, 9355, 9356, 9357, 9358, 9359, 9360, 9361, 9362, 9363, 9364, 9365, 9366, 9367, 9368, 9369, 9370, 9371, 9332, 9333, 9334, 9335, 9336, 9337, 9338, 9339, 9340, 9341, 9342, 9343, 9344, 9345, 9346, 9347, 9348, 9349, 9350, 9351, 9312, 9313, 9314, 9315, 9316, 9317, 9318, 9319, 9320, 9321, 8364, 59245, 12832, 12833, 12834, 12835, 12836, 12837, 12838, 12839, 12840, 12841, 59246, 59247, 8544, 8545, 8546, 8547, 8548, 8549, 8550, 8551, 8552, 8553, 8554, 8555, 59248, 59249, 58758, 58759, 58760, 58761, 58762, 58763, 58764, 58765, 58766, 58767, 58768, 58769, 58770, 58771, 58772, 58773, 58774, 58775, 58776, 58777, 58778, 58779, 58780, 58781, 58782, 58783, 58784, 58785, 58786, 58787, 58788, 58789, 58790, 58791, 58792, 58793, 58794, 58795, 58796, 58797, 58798, 58799, 58800, 58801, 58802, 58803, 58804, 58805, 58806, 58807, 58808, 58809, 58810, 58811, 58812, 58813, 58814, 58815, 58816, 58817, 58818, 58819, 58820, 58821, 58822, 58823, 58824, 58825, 58826, 58827, 58828, 58829, 58830, 58831, 58832, 58833, 58834, 58835, 58836, 58837, 58838, 58839, 58840, 58841, 58842, 58843, 58844, 58845, 58846, 58847, 58848, 58849, 58850, 58851, 58852, 12288, 65281, 65282, 65283, 65509, 65285, 65286, 65287, 65288, 65289, 65290, 65291, 65292, 65293, 65294, 65295, 65296, 65297, 65298, 65299, 65300, 65301, 65302, 65303, 65304, 65305, 65306, 65307, 65308, 65309, 65310, 65311, 65312, 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, 65339, 65340, 65341, 65342, 65343, 65344, 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, 65371, 65372, 65373, 65507, 58854, 58855, 58856, 58857, 58858, 58859, 58860, 58861, 58862, 58863, 58864, 58865, 58866, 58867, 58868, 58869, 58870, 58871, 58872, 58873, 58874, 58875, 58876, 58877, 58878, 58879, 58880, 58881, 58882, 58883, 58884, 58885, 58886, 58887, 58888, 58889, 58890, 58891, 58892, 58893, 58894, 58895, 58896, 58897, 58898, 58899, 58900, 58901, 58902, 58903, 58904, 58905, 58906, 58907, 58908, 58909, 58910, 58911, 58912, 58913, 58914, 58915, 58916, 58917, 58918, 58919, 58920, 58921, 58922, 58923, 58924, 58925, 58926, 58927, 58928, 58929, 58930, 58931, 58932, 58933, 58934, 58935, 58936, 58937, 58938, 58939, 58940, 58941, 58942, 58943, 58944, 58945, 58946, 58947, 58948, 58949, 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, 59250, 59251, 59252, 59253, 59254, 59255, 59256, 59257, 59258, 59259, 59260, 58950, 58951, 58952, 58953, 58954, 58955, 58956, 58957, 58958, 58959, 58960, 58961, 58962, 58963, 58964, 58965, 58966, 58967, 58968, 58969, 58970, 58971, 58972, 58973, 58974, 58975, 58976, 58977, 58978, 58979, 58980, 58981, 58982, 58983, 58984, 58985, 58986, 58987, 58988, 58989, 58990, 58991, 58992, 58993, 58994, 58995, 58996, 58997, 58998, 58999, 59e3, 59001, 59002, 59003, 59004, 59005, 59006, 59007, 59008, 59009, 59010, 59011, 59012, 59013, 59014, 59015, 59016, 59017, 59018, 59019, 59020, 59021, 59022, 59023, 59024, 59025, 59026, 59027, 59028, 59029, 59030, 59031, 59032, 59033, 59034, 59035, 59036, 59037, 59038, 59039, 59040, 59041, 59042, 59043, 59044, 59045, 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, 59261, 59262, 59263, 59264, 59265, 59266, 59267, 59268, 59046, 59047, 59048, 59049, 59050, 59051, 59052, 59053, 59054, 59055, 59056, 59057, 59058, 59059, 59060, 59061, 59062, 59063, 59064, 59065, 59066, 59067, 59068, 59069, 59070, 59071, 59072, 59073, 59074, 59075, 59076, 59077, 59078, 59079, 59080, 59081, 59082, 59083, 59084, 59085, 59086, 59087, 59088, 59089, 59090, 59091, 59092, 59093, 59094, 59095, 59096, 59097, 59098, 59099, 59100, 59101, 59102, 59103, 59104, 59105, 59106, 59107, 59108, 59109, 59110, 59111, 59112, 59113, 59114, 59115, 59116, 59117, 59118, 59119, 59120, 59121, 59122, 59123, 59124, 59125, 59126, 59127, 59128, 59129, 59130, 59131, 59132, 59133, 59134, 59135, 59136, 59137, 59138, 59139, 59140, 59141, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 59269, 59270, 59271, 59272, 59273, 59274, 59275, 59276, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 963, 964, 965, 966, 967, 968, 969, 59277, 59278, 59279, 59280, 59281, 59282, 59283, 65077, 65078, 65081, 65082, 65087, 65088, 65085, 65086, 65089, 65090, 65091, 65092, 59284, 59285, 65083, 65084, 65079, 65080, 65073, 59286, 65075, 65076, 59287, 59288, 59289, 59290, 59291, 59292, 59293, 59294, 59295, 59142, 59143, 59144, 59145, 59146, 59147, 59148, 59149, 59150, 59151, 59152, 59153, 59154, 59155, 59156, 59157, 59158, 59159, 59160, 59161, 59162, 59163, 59164, 59165, 59166, 59167, 59168, 59169, 59170, 59171, 59172, 59173, 59174, 59175, 59176, 59177, 59178, 59179, 59180, 59181, 59182, 59183, 59184, 59185, 59186, 59187, 59188, 59189, 59190, 59191, 59192, 59193, 59194, 59195, 59196, 59197, 59198, 59199, 59200, 59201, 59202, 59203, 59204, 59205, 59206, 59207, 59208, 59209, 59210, 59211, 59212, 59213, 59214, 59215, 59216, 59217, 59218, 59219, 59220, 59221, 59222, 59223, 59224, 59225, 59226, 59227, 59228, 59229, 59230, 59231, 59232, 59233, 59234, 59235, 59236, 59237, 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, 59296, 59297, 59298, 59299, 59300, 59301, 59302, 59303, 59304, 59305, 59306, 59307, 59308, 59309, 59310, 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, 59311, 59312, 59313, 59314, 59315, 59316, 59317, 59318, 59319, 59320, 59321, 59322, 59323, 714, 715, 729, 8211, 8213, 8229, 8245, 8453, 8457, 8598, 8599, 8600, 8601, 8725, 8735, 8739, 8786, 8806, 8807, 8895, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9581, 9582, 9583, 9584, 9585, 9586, 9587, 9601, 9602, 9603, 9604, 9605, 9606, 9607, 9608, 9609, 9610, 9611, 9612, 9613, 9614, 9615, 9619, 9620, 9621, 9660, 9661, 9698, 9699, 9700, 9701, 9737, 8853, 12306, 12317, 12318, 59324, 59325, 59326, 59327, 59328, 59329, 59330, 59331, 59332, 59333, 59334, 257, 225, 462, 224, 275, 233, 283, 232, 299, 237, 464, 236, 333, 243, 466, 242, 363, 250, 468, 249, 470, 472, 474, 476, 252, 234, 593, 7743, 324, 328, 505, 609, 59337, 59338, 59339, 59340, 12549, 12550, 12551, 12552, 12553, 12554, 12555, 12556, 12557, 12558, 12559, 12560, 12561, 12562, 12563, 12564, 12565, 12566, 12567, 12568, 12569, 12570, 12571, 12572, 12573, 12574, 12575, 12576, 12577, 12578, 12579, 12580, 12581, 12582, 12583, 12584, 12585, 59341, 59342, 59343, 59344, 59345, 59346, 59347, 59348, 59349, 59350, 59351, 59352, 59353, 59354, 59355, 59356, 59357, 59358, 59359, 59360, 59361, 12321, 12322, 12323, 12324, 12325, 12326, 12327, 12328, 12329, 12963, 13198, 13199, 13212, 13213, 13214, 13217, 13252, 13262, 13265, 13266, 13269, 65072, 65506, 65508, 59362, 8481, 12849, 59363, 8208, 59364, 59365, 59366, 12540, 12443, 12444, 12541, 12542, 12294, 12445, 12446, 65097, 65098, 65099, 65100, 65101, 65102, 65103, 65104, 65105, 65106, 65108, 65109, 65110, 65111, 65113, 65114, 65115, 65116, 65117, 65118, 65119, 65120, 65121, 65122, 65123, 65124, 65125, 65126, 65128, 65129, 65130, 65131, 12350, 12272, 12273, 12274, 12275, 12276, 12277, 12278, 12279, 12280, 12281, 12282, 12283, 12295, 59380, 59381, 59382, 59383, 59384, 59385, 59386, 59387, 59388, 59389, 59390, 59391, 59392, 9472, 9473, 9474, 9475, 9476, 9477, 9478, 9479, 9480, 9481, 9482, 9483, 9484, 9485, 9486, 9487, 9488, 9489, 9490, 9491, 9492, 9493, 9494, 9495, 9496, 9497, 9498, 9499, 9500, 9501, 9502, 9503, 9504, 9505, 9506, 9507, 9508, 9509, 9510, 9511, 9512, 9513, 9514, 9515, 9516, 9517, 9518, 9519, 9520, 9521, 9522, 9523, 9524, 9525, 9526, 9527, 9528, 9529, 9530, 9531, 9532, 9533, 9534, 9535, 9536, 9537, 9538, 9539, 9540, 9541, 9542, 9543, 9544, 9545, 9546, 9547, 59393, 59394, 59395, 59396, 59397, 59398, 59399, 59400, 59401, 59402, 59403, 59404, 59405, 59406, 59407, 29404, 29405, 29407, 29410, 29411, 29412, 29413, 29414, 29415, 29418, 29419, 29429, 29430, 29433, 29437, 29438, 29439, 29440, 29442, 29444, 29445, 29446, 29447, 29448, 29449, 29451, 29452, 29453, 29455, 29456, 29457, 29458, 29460, 29464, 29465, 29466, 29471, 29472, 29475, 29476, 29478, 29479, 29480, 29485, 29487, 29488, 29490, 29491, 29493, 29494, 29498, 29499, 29500, 29501, 29504, 29505, 29506, 29507, 29508, 29509, 29510, 29511, 29512, 29513, 29514, 29515, 29516, 29518, 29519, 29521, 29523, 29524, 29525, 29526, 29528, 29529, 29530, 29531, 29532, 29533, 29534, 29535, 29537, 29538, 29539, 29540, 29541, 29542, 29543, 29544, 29545, 29546, 29547, 29550, 29552, 29553, 57344, 57345, 57346, 57347, 57348, 57349, 57350, 57351, 57352, 57353, 57354, 57355, 57356, 57357, 57358, 57359, 57360, 57361, 57362, 57363, 57364, 57365, 57366, 57367, 57368, 57369, 57370, 57371, 57372, 57373, 57374, 57375, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57383, 57384, 57385, 57386, 57387, 57388, 57389, 57390, 57391, 57392, 57393, 57394, 57395, 57396, 57397, 57398, 57399, 57400, 57401, 57402, 57403, 57404, 57405, 57406, 57407, 57408, 57409, 57410, 57411, 57412, 57413, 57414, 57415, 57416, 57417, 57418, 57419, 57420, 57421, 57422, 57423, 57424, 57425, 57426, 57427, 57428, 57429, 57430, 57431, 57432, 57433, 57434, 57435, 57436, 57437, 29554, 29555, 29556, 29557, 29558, 29559, 29560, 29561, 29562, 29563, 29564, 29565, 29567, 29568, 29569, 29570, 29571, 29573, 29574, 29576, 29578, 29580, 29581, 29583, 29584, 29586, 29587, 29588, 29589, 29591, 29592, 29593, 29594, 29596, 29597, 29598, 29600, 29601, 29603, 29604, 29605, 29606, 29607, 29608, 29610, 29612, 29613, 29617, 29620, 29621, 29622, 29624, 29625, 29628, 29629, 29630, 29631, 29633, 29635, 29636, 29637, 29638, 29639, 29643, 29644, 29646, 29650, 29651, 29652, 29653, 29654, 29655, 29656, 29658, 29659, 29660, 29661, 29663, 29665, 29666, 29667, 29668, 29670, 29672, 29674, 29675, 29676, 29678, 29679, 29680, 29681, 29683, 29684, 29685, 29686, 29687, 57438, 57439, 57440, 57441, 57442, 57443, 57444, 57445, 57446, 57447, 57448, 57449, 57450, 57451, 57452, 57453, 57454, 57455, 57456, 57457, 57458, 57459, 57460, 57461, 57462, 57463, 57464, 57465, 57466, 57467, 57468, 57469, 57470, 57471, 57472, 57473, 57474, 57475, 57476, 57477, 57478, 57479, 57480, 57481, 57482, 57483, 57484, 57485, 57486, 57487, 57488, 57489, 57490, 57491, 57492, 57493, 57494, 57495, 57496, 57497, 57498, 57499, 57500, 57501, 57502, 57503, 57504, 57505, 57506, 57507, 57508, 57509, 57510, 57511, 57512, 57513, 57514, 57515, 57516, 57517, 57518, 57519, 57520, 57521, 57522, 57523, 57524, 57525, 57526, 57527, 57528, 57529, 57530, 57531, 29688, 29689, 29690, 29691, 29692, 29693, 29694, 29695, 29696, 29697, 29698, 29700, 29703, 29704, 29707, 29708, 29709, 29710, 29713, 29714, 29715, 29716, 29717, 29718, 29719, 29720, 29721, 29724, 29725, 29726, 29727, 29728, 29729, 29731, 29732, 29735, 29737, 29739, 29741, 29743, 29745, 29746, 29751, 29752, 29753, 29754, 29755, 29757, 29758, 29759, 29760, 29762, 29763, 29764, 29765, 29766, 29767, 29768, 29769, 29770, 29771, 29772, 29773, 29774, 29775, 29776, 29777, 29778, 29779, 29780, 29782, 29784, 29789, 29792, 29793, 29794, 29795, 29796, 29797, 29798, 29799, 29800, 29801, 29802, 29803, 29804, 29806, 29807, 29809, 29810, 29811, 29812, 29813, 29816, 29817, 29818, 57532, 57533, 57534, 57535, 57536, 57537, 57538, 57539, 57540, 57541, 57542, 57543, 57544, 57545, 57546, 57547, 57548, 57549, 57550, 57551, 57552, 57553, 57554, 57555, 57556, 57557, 57558, 57559, 57560, 57561, 57562, 57563, 57564, 57565, 57566, 57567, 57568, 57569, 57570, 57571, 57572, 57573, 57574, 57575, 57576, 57577, 57578, 57579, 57580, 57581, 57582, 57583, 57584, 57585, 57586, 57587, 57588, 57589, 57590, 57591, 57592, 57593, 57594, 57595, 57596, 57597, 57598, 57599, 57600, 57601, 57602, 57603, 57604, 57605, 57606, 57607, 57608, 57609, 57610, 57611, 57612, 57613, 57614, 57615, 57616, 57617, 57618, 57619, 57620, 57621, 57622, 57623, 57624, 57625, 29819, 29820, 29821, 29823, 29826, 29828, 29829, 29830, 29832, 29833, 29834, 29836, 29837, 29839, 29841, 29842, 29843, 29844, 29845, 29846, 29847, 29848, 29849, 29850, 29851, 29853, 29855, 29856, 29857, 29858, 29859, 29860, 29861, 29862, 29866, 29867, 29868, 29869, 29870, 29871, 29872, 29873, 29874, 29875, 29876, 29877, 29878, 29879, 29880, 29881, 29883, 29884, 29885, 29886, 29887, 29888, 29889, 29890, 29891, 29892, 29893, 29894, 29895, 29896, 29897, 29898, 29899, 29900, 29901, 29902, 29903, 29904, 29905, 29907, 29908, 29909, 29910, 29911, 29912, 29913, 29914, 29915, 29917, 29919, 29921, 29925, 29927, 29928, 29929, 29930, 29931, 29932, 29933, 29936, 29937, 29938, 57626, 57627, 57628, 57629, 57630, 57631, 57632, 57633, 57634, 57635, 57636, 57637, 57638, 57639, 57640, 57641, 57642, 57643, 57644, 57645, 57646, 57647, 57648, 57649, 57650, 57651, 57652, 57653, 57654, 57655, 57656, 57657, 57658, 57659, 57660, 57661, 57662, 57663, 57664, 57665, 57666, 57667, 57668, 57669, 57670, 57671, 57672, 57673, 57674, 57675, 57676, 57677, 57678, 57679, 57680, 57681, 57682, 57683, 57684, 57685, 57686, 57687, 57688, 57689, 57690, 57691, 57692, 57693, 57694, 57695, 57696, 57697, 57698, 57699, 57700, 57701, 57702, 57703, 57704, 57705, 57706, 57707, 57708, 57709, 57710, 57711, 57712, 57713, 57714, 57715, 57716, 57717, 57718, 57719, 29939, 29941, 29944, 29945, 29946, 29947, 29948, 29949, 29950, 29952, 29953, 29954, 29955, 29957, 29958, 29959, 29960, 29961, 29962, 29963, 29964, 29966, 29968, 29970, 29972, 29973, 29974, 29975, 29979, 29981, 29982, 29984, 29985, 29986, 29987, 29988, 29990, 29991, 29994, 29998, 30004, 30006, 30009, 30012, 30013, 30015, 30017, 30018, 30019, 30020, 30022, 30023, 30025, 30026, 30029, 30032, 30033, 30034, 30035, 30037, 30038, 30039, 30040, 30045, 30046, 30047, 30048, 30049, 30050, 30051, 30052, 30055, 30056, 30057, 30059, 30060, 30061, 30062, 30063, 30064, 30065, 30067, 30069, 30070, 30071, 30074, 30075, 30076, 30077, 30078, 30080, 30081, 30082, 30084, 30085, 30087, 57720, 57721, 57722, 57723, 57724, 57725, 57726, 57727, 57728, 57729, 57730, 57731, 57732, 57733, 57734, 57735, 57736, 57737, 57738, 57739, 57740, 57741, 57742, 57743, 57744, 57745, 57746, 57747, 57748, 57749, 57750, 57751, 57752, 57753, 57754, 57755, 57756, 57757, 57758, 57759, 57760, 57761, 57762, 57763, 57764, 57765, 57766, 57767, 57768, 57769, 57770, 57771, 57772, 57773, 57774, 57775, 57776, 57777, 57778, 57779, 57780, 57781, 57782, 57783, 57784, 57785, 57786, 57787, 57788, 57789, 57790, 57791, 57792, 57793, 57794, 57795, 57796, 57797, 57798, 57799, 57800, 57801, 57802, 57803, 57804, 57805, 57806, 57807, 57808, 57809, 57810, 57811, 57812, 57813, 30088, 30089, 30090, 30092, 30093, 30094, 30096, 30099, 30101, 30104, 30107, 30108, 30110, 30114, 30118, 30119, 30120, 30121, 30122, 30125, 30134, 30135, 30138, 30139, 30143, 30144, 30145, 30150, 30155, 30156, 30158, 30159, 30160, 30161, 30163, 30167, 30169, 30170, 30172, 30173, 30175, 30176, 30177, 30181, 30185, 30188, 30189, 30190, 30191, 30194, 30195, 30197, 30198, 30199, 30200, 30202, 30203, 30205, 30206, 30210, 30212, 30214, 30215, 30216, 30217, 30219, 30221, 30222, 30223, 30225, 30226, 30227, 30228, 30230, 30234, 30236, 30237, 30238, 30241, 30243, 30247, 30248, 30252, 30254, 30255, 30257, 30258, 30262, 30263, 30265, 30266, 30267, 30269, 30273, 30274, 30276, 57814, 57815, 57816, 57817, 57818, 57819, 57820, 57821, 57822, 57823, 57824, 57825, 57826, 57827, 57828, 57829, 57830, 57831, 57832, 57833, 57834, 57835, 57836, 57837, 57838, 57839, 57840, 57841, 57842, 57843, 57844, 57845, 57846, 57847, 57848, 57849, 57850, 57851, 57852, 57853, 57854, 57855, 57856, 57857, 57858, 57859, 57860, 57861, 57862, 57863, 57864, 57865, 57866, 57867, 57868, 57869, 57870, 57871, 57872, 57873, 57874, 57875, 57876, 57877, 57878, 57879, 57880, 57881, 57882, 57883, 57884, 57885, 57886, 57887, 57888, 57889, 57890, 57891, 57892, 57893, 57894, 57895, 57896, 57897, 57898, 57899, 57900, 57901, 57902, 57903, 57904, 57905, 57906, 57907, 30277, 30278, 30279, 30280, 30281, 30282, 30283, 30286, 30287, 30288, 30289, 30290, 30291, 30293, 30295, 30296, 30297, 30298, 30299, 30301, 30303, 30304, 30305, 30306, 30308, 30309, 30310, 30311, 30312, 30313, 30314, 30316, 30317, 30318, 30320, 30321, 30322, 30323, 30324, 30325, 30326, 30327, 30329, 30330, 30332, 30335, 30336, 30337, 30339, 30341, 30345, 30346, 30348, 30349, 30351, 30352, 30354, 30356, 30357, 30359, 30360, 30362, 30363, 30364, 30365, 30366, 30367, 30368, 30369, 30370, 30371, 30373, 30374, 30375, 30376, 30377, 30378, 30379, 30380, 30381, 30383, 30384, 30387, 30389, 30390, 30391, 30392, 30393, 30394, 30395, 30396, 30397, 30398, 30400, 30401, 30403, 21834, 38463, 22467, 25384, 21710, 21769, 21696, 30353, 30284, 34108, 30702, 33406, 30861, 29233, 38552, 38797, 27688, 23433, 20474, 25353, 26263, 23736, 33018, 26696, 32942, 26114, 30414, 20985, 25942, 29100, 32753, 34948, 20658, 22885, 25034, 28595, 33453, 25420, 25170, 21485, 21543, 31494, 20843, 30116, 24052, 25300, 36299, 38774, 25226, 32793, 22365, 38712, 32610, 29240, 30333, 26575, 30334, 25670, 20336, 36133, 25308, 31255, 26001, 29677, 25644, 25203, 33324, 39041, 26495, 29256, 25198, 25292, 20276, 29923, 21322, 21150, 32458, 37030, 24110, 26758, 27036, 33152, 32465, 26834, 30917, 34444, 38225, 20621, 35876, 33502, 32990, 21253, 35090, 21093, 30404, 30407, 30409, 30411, 30412, 30419, 30421, 30425, 30426, 30428, 30429, 30430, 30432, 30433, 30434, 30435, 30436, 30438, 30439, 30440, 30441, 30442, 30443, 30444, 30445, 30448, 30451, 30453, 30454, 30455, 30458, 30459, 30461, 30463, 30464, 30466, 30467, 30469, 30470, 30474, 30476, 30478, 30479, 30480, 30481, 30482, 30483, 30484, 30485, 30486, 30487, 30488, 30491, 30492, 30493, 30494, 30497, 30499, 30500, 30501, 30503, 30506, 30507, 30508, 30510, 30512, 30513, 30514, 30515, 30516, 30521, 30523, 30525, 30526, 30527, 30530, 30532, 30533, 30534, 30536, 30537, 30538, 30539, 30540, 30541, 30542, 30543, 30546, 30547, 30548, 30549, 30550, 30551, 30552, 30553, 30556, 34180, 38649, 20445, 22561, 39281, 23453, 25265, 25253, 26292, 35961, 40077, 29190, 26479, 30865, 24754, 21329, 21271, 36744, 32972, 36125, 38049, 20493, 29384, 22791, 24811, 28953, 34987, 22868, 33519, 26412, 31528, 23849, 32503, 29997, 27893, 36454, 36856, 36924, 40763, 27604, 37145, 31508, 24444, 30887, 34006, 34109, 27605, 27609, 27606, 24065, 24199, 30201, 38381, 25949, 24330, 24517, 36767, 22721, 33218, 36991, 38491, 38829, 36793, 32534, 36140, 25153, 20415, 21464, 21342, 36776, 36777, 36779, 36941, 26631, 24426, 33176, 34920, 40150, 24971, 21035, 30250, 24428, 25996, 28626, 28392, 23486, 25672, 20853, 20912, 26564, 19993, 31177, 39292, 28851, 30557, 30558, 30559, 30560, 30564, 30567, 30569, 30570, 30573, 30574, 30575, 30576, 30577, 30578, 30579, 30580, 30581, 30582, 30583, 30584, 30586, 30587, 30588, 30593, 30594, 30595, 30598, 30599, 30600, 30601, 30602, 30603, 30607, 30608, 30611, 30612, 30613, 30614, 30615, 30616, 30617, 30618, 30619, 30620, 30621, 30622, 30625, 30627, 30628, 30630, 30632, 30635, 30637, 30638, 30639, 30641, 30642, 30644, 30646, 30647, 30648, 30649, 30650, 30652, 30654, 30656, 30657, 30658, 30659, 30660, 30661, 30662, 30663, 30664, 30665, 30666, 30667, 30668, 30670, 30671, 30672, 30673, 30674, 30675, 30676, 30677, 30678, 30680, 30681, 30682, 30685, 30686, 30687, 30688, 30689, 30692, 30149, 24182, 29627, 33760, 25773, 25320, 38069, 27874, 21338, 21187, 25615, 38082, 31636, 20271, 24091, 33334, 33046, 33162, 28196, 27850, 39539, 25429, 21340, 21754, 34917, 22496, 19981, 24067, 27493, 31807, 37096, 24598, 25830, 29468, 35009, 26448, 25165, 36130, 30572, 36393, 37319, 24425, 33756, 34081, 39184, 21442, 34453, 27531, 24813, 24808, 28799, 33485, 33329, 20179, 27815, 34255, 25805, 31961, 27133, 26361, 33609, 21397, 31574, 20391, 20876, 27979, 23618, 36461, 25554, 21449, 33580, 33590, 26597, 30900, 25661, 23519, 23700, 24046, 35815, 25286, 26612, 35962, 25600, 25530, 34633, 39307, 35863, 32544, 38130, 20135, 38416, 39076, 26124, 29462, 30694, 30696, 30698, 30703, 30704, 30705, 30706, 30708, 30709, 30711, 30713, 30714, 30715, 30716, 30723, 30724, 30725, 30726, 30727, 30728, 30730, 30731, 30734, 30735, 30736, 30739, 30741, 30745, 30747, 30750, 30752, 30753, 30754, 30756, 30760, 30762, 30763, 30766, 30767, 30769, 30770, 30771, 30773, 30774, 30781, 30783, 30785, 30786, 30787, 30788, 30790, 30792, 30793, 30794, 30795, 30797, 30799, 30801, 30803, 30804, 30808, 30809, 30810, 30811, 30812, 30814, 30815, 30816, 30817, 30818, 30819, 30820, 30821, 30822, 30823, 30824, 30825, 30831, 30832, 30833, 30834, 30835, 30836, 30837, 30838, 30840, 30841, 30842, 30843, 30845, 30846, 30847, 30848, 30849, 30850, 30851, 22330, 23581, 24120, 38271, 20607, 32928, 21378, 25950, 30021, 21809, 20513, 36229, 25220, 38046, 26397, 22066, 28526, 24034, 21557, 28818, 36710, 25199, 25764, 25507, 24443, 28552, 37108, 33251, 36784, 23576, 26216, 24561, 27785, 38472, 36225, 34924, 25745, 31216, 22478, 27225, 25104, 21576, 20056, 31243, 24809, 28548, 35802, 25215, 36894, 39563, 31204, 21507, 30196, 25345, 21273, 27744, 36831, 24347, 39536, 32827, 40831, 20360, 23610, 36196, 32709, 26021, 28861, 20805, 20914, 34411, 23815, 23456, 25277, 37228, 30068, 36364, 31264, 24833, 31609, 20167, 32504, 30597, 19985, 33261, 21021, 20986, 27249, 21416, 36487, 38148, 38607, 28353, 38500, 26970, 30852, 30853, 30854, 30856, 30858, 30859, 30863, 30864, 30866, 30868, 30869, 30870, 30873, 30877, 30878, 30880, 30882, 30884, 30886, 30888, 30889, 30890, 30891, 30892, 30893, 30894, 30895, 30901, 30902, 30903, 30904, 30906, 30907, 30908, 30909, 30911, 30912, 30914, 30915, 30916, 30918, 30919, 30920, 30924, 30925, 30926, 30927, 30929, 30930, 30931, 30934, 30935, 30936, 30938, 30939, 30940, 30941, 30942, 30943, 30944, 30945, 30946, 30947, 30948, 30949, 30950, 30951, 30953, 30954, 30955, 30957, 30958, 30959, 30960, 30961, 30963, 30965, 30966, 30968, 30969, 30971, 30972, 30973, 30974, 30975, 30976, 30978, 30979, 30980, 30982, 30983, 30984, 30985, 30986, 30987, 30988, 30784, 20648, 30679, 25616, 35302, 22788, 25571, 24029, 31359, 26941, 20256, 33337, 21912, 20018, 30126, 31383, 24162, 24202, 38383, 21019, 21561, 28810, 25462, 38180, 22402, 26149, 26943, 37255, 21767, 28147, 32431, 34850, 25139, 32496, 30133, 33576, 30913, 38604, 36766, 24904, 29943, 35789, 27492, 21050, 36176, 27425, 32874, 33905, 22257, 21254, 20174, 19995, 20945, 31895, 37259, 31751, 20419, 36479, 31713, 31388, 25703, 23828, 20652, 33030, 30209, 31929, 28140, 32736, 26449, 23384, 23544, 30923, 25774, 25619, 25514, 25387, 38169, 25645, 36798, 31572, 30249, 25171, 22823, 21574, 27513, 20643, 25140, 24102, 27526, 20195, 36151, 34955, 24453, 36910, 30989, 30990, 30991, 30992, 30993, 30994, 30996, 30997, 30998, 30999, 31e3, 31001, 31002, 31003, 31004, 31005, 31007, 31008, 31009, 31010, 31011, 31013, 31014, 31015, 31016, 31017, 31018, 31019, 31020, 31021, 31022, 31023, 31024, 31025, 31026, 31027, 31029, 31030, 31031, 31032, 31033, 31037, 31039, 31042, 31043, 31044, 31045, 31047, 31050, 31051, 31052, 31053, 31054, 31055, 31056, 31057, 31058, 31060, 31061, 31064, 31065, 31073, 31075, 31076, 31078, 31081, 31082, 31083, 31084, 31086, 31088, 31089, 31090, 31091, 31092, 31093, 31094, 31097, 31099, 31100, 31101, 31102, 31103, 31106, 31107, 31110, 31111, 31112, 31113, 31115, 31116, 31117, 31118, 31120, 31121, 31122, 24608, 32829, 25285, 20025, 21333, 37112, 25528, 32966, 26086, 27694, 20294, 24814, 28129, 35806, 24377, 34507, 24403, 25377, 20826, 33633, 26723, 20992, 25443, 36424, 20498, 23707, 31095, 23548, 21040, 31291, 24764, 36947, 30423, 24503, 24471, 30340, 36460, 28783, 30331, 31561, 30634, 20979, 37011, 22564, 20302, 28404, 36842, 25932, 31515, 29380, 28068, 32735, 23265, 25269, 24213, 22320, 33922, 31532, 24093, 24351, 36882, 32532, 39072, 25474, 28359, 30872, 28857, 20856, 38747, 22443, 30005, 20291, 30008, 24215, 24806, 22880, 28096, 27583, 30857, 21500, 38613, 20939, 20993, 25481, 21514, 38035, 35843, 36300, 29241, 30879, 34678, 36845, 35853, 21472, 31123, 31124, 31125, 31126, 31127, 31128, 31129, 31131, 31132, 31133, 31134, 31135, 31136, 31137, 31138, 31139, 31140, 31141, 31142, 31144, 31145, 31146, 31147, 31148, 31149, 31150, 31151, 31152, 31153, 31154, 31156, 31157, 31158, 31159, 31160, 31164, 31167, 31170, 31172, 31173, 31175, 31176, 31178, 31180, 31182, 31183, 31184, 31187, 31188, 31190, 31191, 31193, 31194, 31195, 31196, 31197, 31198, 31200, 31201, 31202, 31205, 31208, 31210, 31212, 31214, 31217, 31218, 31219, 31220, 31221, 31222, 31223, 31225, 31226, 31228, 31230, 31231, 31233, 31236, 31237, 31239, 31240, 31241, 31242, 31244, 31247, 31248, 31249, 31250, 31251, 31253, 31254, 31256, 31257, 31259, 31260, 19969, 30447, 21486, 38025, 39030, 40718, 38189, 23450, 35746, 20002, 19996, 20908, 33891, 25026, 21160, 26635, 20375, 24683, 20923, 27934, 20828, 25238, 26007, 38497, 35910, 36887, 30168, 37117, 30563, 27602, 29322, 29420, 35835, 22581, 30585, 36172, 26460, 38208, 32922, 24230, 28193, 22930, 31471, 30701, 38203, 27573, 26029, 32526, 22534, 20817, 38431, 23545, 22697, 21544, 36466, 25958, 39039, 22244, 38045, 30462, 36929, 25479, 21702, 22810, 22842, 22427, 36530, 26421, 36346, 33333, 21057, 24816, 22549, 34558, 23784, 40517, 20420, 39069, 35769, 23077, 24694, 21380, 25212, 36943, 37122, 39295, 24681, 32780, 20799, 32819, 23572, 39285, 27953, 20108, 31261, 31263, 31265, 31266, 31268, 31269, 31270, 31271, 31272, 31273, 31274, 31275, 31276, 31277, 31278, 31279, 31280, 31281, 31282, 31284, 31285, 31286, 31288, 31290, 31294, 31296, 31297, 31298, 31299, 31300, 31301, 31303, 31304, 31305, 31306, 31307, 31308, 31309, 31310, 31311, 31312, 31314, 31315, 31316, 31317, 31318, 31320, 31321, 31322, 31323, 31324, 31325, 31326, 31327, 31328, 31329, 31330, 31331, 31332, 31333, 31334, 31335, 31336, 31337, 31338, 31339, 31340, 31341, 31342, 31343, 31345, 31346, 31347, 31349, 31355, 31356, 31357, 31358, 31362, 31365, 31367, 31369, 31370, 31371, 31372, 31374, 31375, 31376, 31379, 31380, 31385, 31386, 31387, 31390, 31393, 31394, 36144, 21457, 32602, 31567, 20240, 20047, 38400, 27861, 29648, 34281, 24070, 30058, 32763, 27146, 30718, 38034, 32321, 20961, 28902, 21453, 36820, 33539, 36137, 29359, 39277, 27867, 22346, 33459, 26041, 32938, 25151, 38450, 22952, 20223, 35775, 32442, 25918, 33778, 38750, 21857, 39134, 32933, 21290, 35837, 21536, 32954, 24223, 27832, 36153, 33452, 37210, 21545, 27675, 20998, 32439, 22367, 28954, 27774, 31881, 22859, 20221, 24575, 24868, 31914, 20016, 23553, 26539, 34562, 23792, 38155, 39118, 30127, 28925, 36898, 20911, 32541, 35773, 22857, 20964, 20315, 21542, 22827, 25975, 32932, 23413, 25206, 25282, 36752, 24133, 27679, 31526, 20239, 20440, 26381, 31395, 31396, 31399, 31401, 31402, 31403, 31406, 31407, 31408, 31409, 31410, 31412, 31413, 31414, 31415, 31416, 31417, 31418, 31419, 31420, 31421, 31422, 31424, 31425, 31426, 31427, 31428, 31429, 31430, 31431, 31432, 31433, 31434, 31436, 31437, 31438, 31439, 31440, 31441, 31442, 31443, 31444, 31445, 31447, 31448, 31450, 31451, 31452, 31453, 31457, 31458, 31460, 31463, 31464, 31465, 31466, 31467, 31468, 31470, 31472, 31473, 31474, 31475, 31476, 31477, 31478, 31479, 31480, 31483, 31484, 31486, 31488, 31489, 31490, 31493, 31495, 31497, 31500, 31501, 31502, 31504, 31506, 31507, 31510, 31511, 31512, 31514, 31516, 31517, 31519, 31521, 31522, 31523, 31527, 31529, 31533, 28014, 28074, 31119, 34993, 24343, 29995, 25242, 36741, 20463, 37340, 26023, 33071, 33105, 24220, 33104, 36212, 21103, 35206, 36171, 22797, 20613, 20184, 38428, 29238, 33145, 36127, 23500, 35747, 38468, 22919, 32538, 21648, 22134, 22030, 35813, 25913, 27010, 38041, 30422, 28297, 24178, 29976, 26438, 26577, 31487, 32925, 36214, 24863, 31174, 25954, 36195, 20872, 21018, 38050, 32568, 32923, 32434, 23703, 28207, 26464, 31705, 30347, 39640, 33167, 32660, 31957, 25630, 38224, 31295, 21578, 21733, 27468, 25601, 25096, 40509, 33011, 30105, 21106, 38761, 33883, 26684, 34532, 38401, 38548, 38124, 20010, 21508, 32473, 26681, 36319, 32789, 26356, 24218, 32697, 31535, 31536, 31538, 31540, 31541, 31542, 31543, 31545, 31547, 31549, 31551, 31552, 31553, 31554, 31555, 31556, 31558, 31560, 31562, 31565, 31566, 31571, 31573, 31575, 31577, 31580, 31582, 31583, 31585, 31587, 31588, 31589, 31590, 31591, 31592, 31593, 31594, 31595, 31596, 31597, 31599, 31600, 31603, 31604, 31606, 31608, 31610, 31612, 31613, 31615, 31617, 31618, 31619, 31620, 31622, 31623, 31624, 31625, 31626, 31627, 31628, 31630, 31631, 31633, 31634, 31635, 31638, 31640, 31641, 31642, 31643, 31646, 31647, 31648, 31651, 31652, 31653, 31662, 31663, 31664, 31666, 31667, 31669, 31670, 31671, 31673, 31674, 31675, 31676, 31677, 31678, 31679, 31680, 31682, 31683, 31684, 22466, 32831, 26775, 24037, 25915, 21151, 24685, 40858, 20379, 36524, 20844, 23467, 24339, 24041, 27742, 25329, 36129, 20849, 38057, 21246, 27807, 33503, 29399, 22434, 26500, 36141, 22815, 36764, 33735, 21653, 31629, 20272, 27837, 23396, 22993, 40723, 21476, 34506, 39592, 35895, 32929, 25925, 39038, 22266, 38599, 21038, 29916, 21072, 23521, 25346, 35074, 20054, 25296, 24618, 26874, 20851, 23448, 20896, 35266, 31649, 39302, 32592, 24815, 28748, 36143, 20809, 24191, 36891, 29808, 35268, 22317, 30789, 24402, 40863, 38394, 36712, 39740, 35809, 30328, 26690, 26588, 36330, 36149, 21053, 36746, 28378, 26829, 38149, 37101, 22269, 26524, 35065, 36807, 21704, 31685, 31688, 31689, 31690, 31691, 31693, 31694, 31695, 31696, 31698, 31700, 31701, 31702, 31703, 31704, 31707, 31708, 31710, 31711, 31712, 31714, 31715, 31716, 31719, 31720, 31721, 31723, 31724, 31725, 31727, 31728, 31730, 31731, 31732, 31733, 31734, 31736, 31737, 31738, 31739, 31741, 31743, 31744, 31745, 31746, 31747, 31748, 31749, 31750, 31752, 31753, 31754, 31757, 31758, 31760, 31761, 31762, 31763, 31764, 31765, 31767, 31768, 31769, 31770, 31771, 31772, 31773, 31774, 31776, 31777, 31778, 31779, 31780, 31781, 31784, 31785, 31787, 31788, 31789, 31790, 31791, 31792, 31793, 31794, 31795, 31796, 31797, 31798, 31799, 31801, 31802, 31803, 31804, 31805, 31806, 31810, 39608, 23401, 28023, 27686, 20133, 23475, 39559, 37219, 25e3, 37039, 38889, 21547, 28085, 23506, 20989, 21898, 32597, 32752, 25788, 25421, 26097, 25022, 24717, 28938, 27735, 27721, 22831, 26477, 33322, 22741, 22158, 35946, 27627, 37085, 22909, 32791, 21495, 28009, 21621, 21917, 33655, 33743, 26680, 31166, 21644, 20309, 21512, 30418, 35977, 38402, 27827, 28088, 36203, 35088, 40548, 36154, 22079, 40657, 30165, 24456, 29408, 24680, 21756, 20136, 27178, 34913, 24658, 36720, 21700, 28888, 34425, 40511, 27946, 23439, 24344, 32418, 21897, 20399, 29492, 21564, 21402, 20505, 21518, 21628, 20046, 24573, 29786, 22774, 33899, 32993, 34676, 29392, 31946, 28246, 31811, 31812, 31813, 31814, 31815, 31816, 31817, 31818, 31819, 31820, 31822, 31823, 31824, 31825, 31826, 31827, 31828, 31829, 31830, 31831, 31832, 31833, 31834, 31835, 31836, 31837, 31838, 31839, 31840, 31841, 31842, 31843, 31844, 31845, 31846, 31847, 31848, 31849, 31850, 31851, 31852, 31853, 31854, 31855, 31856, 31857, 31858, 31861, 31862, 31863, 31864, 31865, 31866, 31870, 31871, 31872, 31873, 31874, 31875, 31876, 31877, 31878, 31879, 31880, 31882, 31883, 31884, 31885, 31886, 31887, 31888, 31891, 31892, 31894, 31897, 31898, 31899, 31904, 31905, 31907, 31910, 31911, 31912, 31913, 31915, 31916, 31917, 31919, 31920, 31924, 31925, 31926, 31927, 31928, 31930, 31931, 24359, 34382, 21804, 25252, 20114, 27818, 25143, 33457, 21719, 21326, 29502, 28369, 30011, 21010, 21270, 35805, 27088, 24458, 24576, 28142, 22351, 27426, 29615, 26707, 36824, 32531, 25442, 24739, 21796, 30186, 35938, 28949, 28067, 23462, 24187, 33618, 24908, 40644, 30970, 34647, 31783, 30343, 20976, 24822, 29004, 26179, 24140, 24653, 35854, 28784, 25381, 36745, 24509, 24674, 34516, 22238, 27585, 24724, 24935, 21321, 24800, 26214, 36159, 31229, 20250, 28905, 27719, 35763, 35826, 32472, 33636, 26127, 23130, 39746, 27985, 28151, 35905, 27963, 20249, 28779, 33719, 25110, 24785, 38669, 36135, 31096, 20987, 22334, 22522, 26426, 30072, 31293, 31215, 31637, 31935, 31936, 31938, 31939, 31940, 31942, 31945, 31947, 31950, 31951, 31952, 31953, 31954, 31955, 31956, 31960, 31962, 31963, 31965, 31966, 31969, 31970, 31971, 31972, 31973, 31974, 31975, 31977, 31978, 31979, 31980, 31981, 31982, 31984, 31985, 31986, 31987, 31988, 31989, 31990, 31991, 31993, 31994, 31996, 31997, 31998, 31999, 32e3, 32001, 32002, 32003, 32004, 32005, 32006, 32007, 32008, 32009, 32011, 32012, 32013, 32014, 32015, 32016, 32017, 32018, 32019, 32020, 32021, 32022, 32023, 32024, 32025, 32026, 32027, 32028, 32029, 32030, 32031, 32033, 32035, 32036, 32037, 32038, 32040, 32041, 32042, 32044, 32045, 32046, 32048, 32049, 32050, 32051, 32052, 32053, 32054, 32908, 39269, 36857, 28608, 35749, 40481, 23020, 32489, 32521, 21513, 26497, 26840, 36753, 31821, 38598, 21450, 24613, 30142, 27762, 21363, 23241, 32423, 25380, 20960, 33034, 24049, 34015, 25216, 20864, 23395, 20238, 31085, 21058, 24760, 27982, 23492, 23490, 35745, 35760, 26082, 24524, 38469, 22931, 32487, 32426, 22025, 26551, 22841, 20339, 23478, 21152, 33626, 39050, 36158, 30002, 38078, 20551, 31292, 20215, 26550, 39550, 23233, 27516, 30417, 22362, 23574, 31546, 38388, 29006, 20860, 32937, 33392, 22904, 32516, 33575, 26816, 26604, 30897, 30839, 25315, 25441, 31616, 20461, 21098, 20943, 33616, 27099, 37492, 36341, 36145, 35265, 38190, 31661, 20214, 32055, 32056, 32057, 32058, 32059, 32060, 32061, 32062, 32063, 32064, 32065, 32066, 32067, 32068, 32069, 32070, 32071, 32072, 32073, 32074, 32075, 32076, 32077, 32078, 32079, 32080, 32081, 32082, 32083, 32084, 32085, 32086, 32087, 32088, 32089, 32090, 32091, 32092, 32093, 32094, 32095, 32096, 32097, 32098, 32099, 32100, 32101, 32102, 32103, 32104, 32105, 32106, 32107, 32108, 32109, 32111, 32112, 32113, 32114, 32115, 32116, 32117, 32118, 32120, 32121, 32122, 32123, 32124, 32125, 32126, 32127, 32128, 32129, 32130, 32131, 32132, 32133, 32134, 32135, 32136, 32137, 32138, 32139, 32140, 32141, 32142, 32143, 32144, 32145, 32146, 32147, 32148, 32149, 32150, 32151, 32152, 20581, 33328, 21073, 39279, 28176, 28293, 28071, 24314, 20725, 23004, 23558, 27974, 27743, 30086, 33931, 26728, 22870, 35762, 21280, 37233, 38477, 34121, 26898, 30977, 28966, 33014, 20132, 37066, 27975, 39556, 23047, 22204, 25605, 38128, 30699, 20389, 33050, 29409, 35282, 39290, 32564, 32478, 21119, 25945, 37237, 36735, 36739, 21483, 31382, 25581, 25509, 30342, 31224, 34903, 38454, 25130, 21163, 33410, 26708, 26480, 25463, 30571, 31469, 27905, 32467, 35299, 22992, 25106, 34249, 33445, 30028, 20511, 20171, 30117, 35819, 23626, 24062, 31563, 26020, 37329, 20170, 27941, 35167, 32039, 38182, 20165, 35880, 36827, 38771, 26187, 31105, 36817, 28908, 28024, 32153, 32154, 32155, 32156, 32157, 32158, 32159, 32160, 32161, 32162, 32163, 32164, 32165, 32167, 32168, 32169, 32170, 32171, 32172, 32173, 32175, 32176, 32177, 32178, 32179, 32180, 32181, 32182, 32183, 32184, 32185, 32186, 32187, 32188, 32189, 32190, 32191, 32192, 32193, 32194, 32195, 32196, 32197, 32198, 32199, 32200, 32201, 32202, 32203, 32204, 32205, 32206, 32207, 32208, 32209, 32210, 32211, 32212, 32213, 32214, 32215, 32216, 32217, 32218, 32219, 32220, 32221, 32222, 32223, 32224, 32225, 32226, 32227, 32228, 32229, 32230, 32231, 32232, 32233, 32234, 32235, 32236, 32237, 32238, 32239, 32240, 32241, 32242, 32243, 32244, 32245, 32246, 32247, 32248, 32249, 32250, 23613, 21170, 33606, 20834, 33550, 30555, 26230, 40120, 20140, 24778, 31934, 31923, 32463, 20117, 35686, 26223, 39048, 38745, 22659, 25964, 38236, 24452, 30153, 38742, 31455, 31454, 20928, 28847, 31384, 25578, 31350, 32416, 29590, 38893, 20037, 28792, 20061, 37202, 21417, 25937, 26087, 33276, 33285, 21646, 23601, 30106, 38816, 25304, 29401, 30141, 23621, 39545, 33738, 23616, 21632, 30697, 20030, 27822, 32858, 25298, 25454, 24040, 20855, 36317, 36382, 38191, 20465, 21477, 24807, 28844, 21095, 25424, 40515, 23071, 20518, 30519, 21367, 32482, 25733, 25899, 25225, 25496, 20500, 29237, 35273, 20915, 35776, 32477, 22343, 33740, 38055, 20891, 21531, 23803, 32251, 32252, 32253, 32254, 32255, 32256, 32257, 32258, 32259, 32260, 32261, 32262, 32263, 32264, 32265, 32266, 32267, 32268, 32269, 32270, 32271, 32272, 32273, 32274, 32275, 32276, 32277, 32278, 32279, 32280, 32281, 32282, 32283, 32284, 32285, 32286, 32287, 32288, 32289, 32290, 32291, 32292, 32293, 32294, 32295, 32296, 32297, 32298, 32299, 32300, 32301, 32302, 32303, 32304, 32305, 32306, 32307, 32308, 32309, 32310, 32311, 32312, 32313, 32314, 32316, 32317, 32318, 32319, 32320, 32322, 32323, 32324, 32325, 32326, 32328, 32329, 32330, 32331, 32332, 32333, 32334, 32335, 32336, 32337, 32338, 32339, 32340, 32341, 32342, 32343, 32344, 32345, 32346, 32347, 32348, 32349, 20426, 31459, 27994, 37089, 39567, 21888, 21654, 21345, 21679, 24320, 25577, 26999, 20975, 24936, 21002, 22570, 21208, 22350, 30733, 30475, 24247, 24951, 31968, 25179, 25239, 20130, 28821, 32771, 25335, 28900, 38752, 22391, 33499, 26607, 26869, 30933, 39063, 31185, 22771, 21683, 21487, 28212, 20811, 21051, 23458, 35838, 32943, 21827, 22438, 24691, 22353, 21549, 31354, 24656, 23380, 25511, 25248, 21475, 25187, 23495, 26543, 21741, 31391, 33510, 37239, 24211, 35044, 22840, 22446, 25358, 36328, 33007, 22359, 31607, 20393, 24555, 23485, 27454, 21281, 31568, 29378, 26694, 30719, 30518, 26103, 20917, 20111, 30420, 23743, 31397, 33909, 22862, 39745, 20608, 32350, 32351, 32352, 32353, 32354, 32355, 32356, 32357, 32358, 32359, 32360, 32361, 32362, 32363, 32364, 32365, 32366, 32367, 32368, 32369, 32370, 32371, 32372, 32373, 32374, 32375, 32376, 32377, 32378, 32379, 32380, 32381, 32382, 32383, 32384, 32385, 32387, 32388, 32389, 32390, 32391, 32392, 32393, 32394, 32395, 32396, 32397, 32398, 32399, 32400, 32401, 32402, 32403, 32404, 32405, 32406, 32407, 32408, 32409, 32410, 32412, 32413, 32414, 32430, 32436, 32443, 32444, 32470, 32484, 32492, 32505, 32522, 32528, 32542, 32567, 32569, 32571, 32572, 32573, 32574, 32575, 32576, 32577, 32579, 32582, 32583, 32584, 32585, 32586, 32587, 32588, 32589, 32590, 32591, 32594, 32595, 39304, 24871, 28291, 22372, 26118, 25414, 22256, 25324, 25193, 24275, 38420, 22403, 25289, 21895, 34593, 33098, 36771, 21862, 33713, 26469, 36182, 34013, 23146, 26639, 25318, 31726, 38417, 20848, 28572, 35888, 25597, 35272, 25042, 32518, 28866, 28389, 29701, 27028, 29436, 24266, 37070, 26391, 28010, 25438, 21171, 29282, 32769, 20332, 23013, 37226, 28889, 28061, 21202, 20048, 38647, 38253, 34174, 30922, 32047, 20769, 22418, 25794, 32907, 31867, 27882, 26865, 26974, 20919, 21400, 26792, 29313, 40654, 31729, 29432, 31163, 28435, 29702, 26446, 37324, 40100, 31036, 33673, 33620, 21519, 26647, 20029, 21385, 21169, 30782, 21382, 21033, 20616, 20363, 20432, 32598, 32601, 32603, 32604, 32605, 32606, 32608, 32611, 32612, 32613, 32614, 32615, 32619, 32620, 32621, 32623, 32624, 32627, 32629, 32630, 32631, 32632, 32634, 32635, 32636, 32637, 32639, 32640, 32642, 32643, 32644, 32645, 32646, 32647, 32648, 32649, 32651, 32653, 32655, 32656, 32657, 32658, 32659, 32661, 32662, 32663, 32664, 32665, 32667, 32668, 32672, 32674, 32675, 32677, 32678, 32680, 32681, 32682, 32683, 32684, 32685, 32686, 32689, 32691, 32692, 32693, 32694, 32695, 32698, 32699, 32702, 32704, 32706, 32707, 32708, 32710, 32711, 32712, 32713, 32715, 32717, 32719, 32720, 32721, 32722, 32723, 32726, 32727, 32729, 32730, 32731, 32732, 32733, 32734, 32738, 32739, 30178, 31435, 31890, 27813, 38582, 21147, 29827, 21737, 20457, 32852, 33714, 36830, 38256, 24265, 24604, 28063, 24088, 25947, 33080, 38142, 24651, 28860, 32451, 31918, 20937, 26753, 31921, 33391, 20004, 36742, 37327, 26238, 20142, 35845, 25769, 32842, 20698, 30103, 29134, 23525, 36797, 28518, 20102, 25730, 38243, 24278, 26009, 21015, 35010, 28872, 21155, 29454, 29747, 26519, 30967, 38678, 20020, 37051, 40158, 28107, 20955, 36161, 21533, 25294, 29618, 33777, 38646, 40836, 38083, 20278, 32666, 20940, 28789, 38517, 23725, 39046, 21478, 20196, 28316, 29705, 27060, 30827, 39311, 30041, 21016, 30244, 27969, 26611, 20845, 40857, 32843, 21657, 31548, 31423, 32740, 32743, 32744, 32746, 32747, 32748, 32749, 32751, 32754, 32756, 32757, 32758, 32759, 32760, 32761, 32762, 32765, 32766, 32767, 32770, 32775, 32776, 32777, 32778, 32782, 32783, 32785, 32787, 32794, 32795, 32797, 32798, 32799, 32801, 32803, 32804, 32811, 32812, 32813, 32814, 32815, 32816, 32818, 32820, 32825, 32826, 32828, 32830, 32832, 32833, 32836, 32837, 32839, 32840, 32841, 32846, 32847, 32848, 32849, 32851, 32853, 32854, 32855, 32857, 32859, 32860, 32861, 32862, 32863, 32864, 32865, 32866, 32867, 32868, 32869, 32870, 32871, 32872, 32875, 32876, 32877, 32878, 32879, 32880, 32882, 32883, 32884, 32885, 32886, 32887, 32888, 32889, 32890, 32891, 32892, 32893, 38534, 22404, 25314, 38471, 27004, 23044, 25602, 31699, 28431, 38475, 33446, 21346, 39045, 24208, 28809, 25523, 21348, 34383, 40065, 40595, 30860, 38706, 36335, 36162, 40575, 28510, 31108, 24405, 38470, 25134, 39540, 21525, 38109, 20387, 26053, 23653, 23649, 32533, 34385, 27695, 24459, 29575, 28388, 32511, 23782, 25371, 23402, 28390, 21365, 20081, 25504, 30053, 25249, 36718, 20262, 20177, 27814, 32438, 35770, 33821, 34746, 32599, 36923, 38179, 31657, 39585, 35064, 33853, 27931, 39558, 32476, 22920, 40635, 29595, 30721, 34434, 39532, 39554, 22043, 21527, 22475, 20080, 40614, 21334, 36808, 33033, 30610, 39314, 34542, 28385, 34067, 26364, 24930, 28459, 32894, 32897, 32898, 32901, 32904, 32906, 32909, 32910, 32911, 32912, 32913, 32914, 32916, 32917, 32919, 32921, 32926, 32931, 32934, 32935, 32936, 32940, 32944, 32947, 32949, 32950, 32952, 32953, 32955, 32965, 32967, 32968, 32969, 32970, 32971, 32975, 32976, 32977, 32978, 32979, 32980, 32981, 32984, 32991, 32992, 32994, 32995, 32998, 33006, 33013, 33015, 33017, 33019, 33022, 33023, 33024, 33025, 33027, 33028, 33029, 33031, 33032, 33035, 33036, 33045, 33047, 33049, 33051, 33052, 33053, 33055, 33056, 33057, 33058, 33059, 33060, 33061, 33062, 33063, 33064, 33065, 33066, 33067, 33069, 33070, 33072, 33075, 33076, 33077, 33079, 33081, 33082, 33083, 33084, 33085, 33087, 35881, 33426, 33579, 30450, 27667, 24537, 33725, 29483, 33541, 38170, 27611, 30683, 38086, 21359, 33538, 20882, 24125, 35980, 36152, 20040, 29611, 26522, 26757, 37238, 38665, 29028, 27809, 30473, 23186, 38209, 27599, 32654, 26151, 23504, 22969, 23194, 38376, 38391, 20204, 33804, 33945, 27308, 30431, 38192, 29467, 26790, 23391, 30511, 37274, 38753, 31964, 36855, 35868, 24357, 31859, 31192, 35269, 27852, 34588, 23494, 24130, 26825, 30496, 32501, 20885, 20813, 21193, 23081, 32517, 38754, 33495, 25551, 30596, 34256, 31186, 28218, 24217, 22937, 34065, 28781, 27665, 25279, 30399, 25935, 24751, 38397, 26126, 34719, 40483, 38125, 21517, 21629, 35884, 25720, 33088, 33089, 33090, 33091, 33092, 33093, 33095, 33097, 33101, 33102, 33103, 33106, 33110, 33111, 33112, 33115, 33116, 33117, 33118, 33119, 33121, 33122, 33123, 33124, 33126, 33128, 33130, 33131, 33132, 33135, 33138, 33139, 33141, 33142, 33143, 33144, 33153, 33155, 33156, 33157, 33158, 33159, 33161, 33163, 33164, 33165, 33166, 33168, 33170, 33171, 33172, 33173, 33174, 33175, 33177, 33178, 33182, 33183, 33184, 33185, 33186, 33188, 33189, 33191, 33193, 33195, 33196, 33197, 33198, 33199, 33200, 33201, 33202, 33204, 33205, 33206, 33207, 33208, 33209, 33212, 33213, 33214, 33215, 33220, 33221, 33223, 33224, 33225, 33227, 33229, 33230, 33231, 33232, 33233, 33234, 33235, 25721, 34321, 27169, 33180, 30952, 25705, 39764, 25273, 26411, 33707, 22696, 40664, 27819, 28448, 23518, 38476, 35851, 29279, 26576, 25287, 29281, 20137, 22982, 27597, 22675, 26286, 24149, 21215, 24917, 26408, 30446, 30566, 29287, 31302, 25343, 21738, 21584, 38048, 37027, 23068, 32435, 27670, 20035, 22902, 32784, 22856, 21335, 30007, 38590, 22218, 25376, 33041, 24700, 38393, 28118, 21602, 39297, 20869, 23273, 33021, 22958, 38675, 20522, 27877, 23612, 25311, 20320, 21311, 33147, 36870, 28346, 34091, 25288, 24180, 30910, 25781, 25467, 24565, 23064, 37247, 40479, 23615, 25423, 32834, 23421, 21870, 38218, 38221, 28037, 24744, 26592, 29406, 20957, 23425, 33236, 33237, 33238, 33239, 33240, 33241, 33242, 33243, 33244, 33245, 33246, 33247, 33248, 33249, 33250, 33252, 33253, 33254, 33256, 33257, 33259, 33262, 33263, 33264, 33265, 33266, 33269, 33270, 33271, 33272, 33273, 33274, 33277, 33279, 33283, 33287, 33288, 33289, 33290, 33291, 33294, 33295, 33297, 33299, 33301, 33302, 33303, 33304, 33305, 33306, 33309, 33312, 33316, 33317, 33318, 33319, 33321, 33326, 33330, 33338, 33340, 33341, 33343, 33344, 33345, 33346, 33347, 33349, 33350, 33352, 33354, 33356, 33357, 33358, 33360, 33361, 33362, 33363, 33364, 33365, 33366, 33367, 33369, 33371, 33372, 33373, 33374, 33376, 33377, 33378, 33379, 33380, 33381, 33382, 33383, 33385, 25319, 27870, 29275, 25197, 38062, 32445, 33043, 27987, 20892, 24324, 22900, 21162, 24594, 22899, 26262, 34384, 30111, 25386, 25062, 31983, 35834, 21734, 27431, 40485, 27572, 34261, 21589, 20598, 27812, 21866, 36276, 29228, 24085, 24597, 29750, 25293, 25490, 29260, 24472, 28227, 27966, 25856, 28504, 30424, 30928, 30460, 30036, 21028, 21467, 20051, 24222, 26049, 32810, 32982, 25243, 21638, 21032, 28846, 34957, 36305, 27873, 21624, 32986, 22521, 35060, 36180, 38506, 37197, 20329, 27803, 21943, 30406, 30768, 25256, 28921, 28558, 24429, 34028, 26842, 30844, 31735, 33192, 26379, 40527, 25447, 30896, 22383, 30738, 38713, 25209, 25259, 21128, 29749, 27607, 33386, 33387, 33388, 33389, 33393, 33397, 33398, 33399, 33400, 33403, 33404, 33408, 33409, 33411, 33413, 33414, 33415, 33417, 33420, 33424, 33427, 33428, 33429, 33430, 33434, 33435, 33438, 33440, 33442, 33443, 33447, 33458, 33461, 33462, 33466, 33467, 33468, 33471, 33472, 33474, 33475, 33477, 33478, 33481, 33488, 33494, 33497, 33498, 33501, 33506, 33511, 33512, 33513, 33514, 33516, 33517, 33518, 33520, 33522, 33523, 33525, 33526, 33528, 33530, 33532, 33533, 33534, 33535, 33536, 33546, 33547, 33549, 33552, 33554, 33555, 33558, 33560, 33561, 33565, 33566, 33567, 33568, 33569, 33570, 33571, 33572, 33573, 33574, 33577, 33578, 33582, 33584, 33586, 33591, 33595, 33597, 21860, 33086, 30130, 30382, 21305, 30174, 20731, 23617, 35692, 31687, 20559, 29255, 39575, 39128, 28418, 29922, 31080, 25735, 30629, 25340, 39057, 36139, 21697, 32856, 20050, 22378, 33529, 33805, 24179, 20973, 29942, 35780, 23631, 22369, 27900, 39047, 23110, 30772, 39748, 36843, 31893, 21078, 25169, 38138, 20166, 33670, 33889, 33769, 33970, 22484, 26420, 22275, 26222, 28006, 35889, 26333, 28689, 26399, 27450, 26646, 25114, 22971, 19971, 20932, 28422, 26578, 27791, 20854, 26827, 22855, 27495, 30054, 23822, 33040, 40784, 26071, 31048, 31041, 39569, 36215, 23682, 20062, 20225, 21551, 22865, 30732, 22120, 27668, 36804, 24323, 27773, 27875, 35755, 25488, 33598, 33599, 33601, 33602, 33604, 33605, 33608, 33610, 33611, 33612, 33613, 33614, 33619, 33621, 33622, 33623, 33624, 33625, 33629, 33634, 33648, 33649, 33650, 33651, 33652, 33653, 33654, 33657, 33658, 33662, 33663, 33664, 33665, 33666, 33667, 33668, 33671, 33672, 33674, 33675, 33676, 33677, 33679, 33680, 33681, 33684, 33685, 33686, 33687, 33689, 33690, 33693, 33695, 33697, 33698, 33699, 33700, 33701, 33702, 33703, 33708, 33709, 33710, 33711, 33717, 33723, 33726, 33727, 33730, 33731, 33732, 33734, 33736, 33737, 33739, 33741, 33742, 33744, 33745, 33746, 33747, 33749, 33751, 33753, 33754, 33755, 33758, 33762, 33763, 33764, 33766, 33767, 33768, 33771, 33772, 33773, 24688, 27965, 29301, 25190, 38030, 38085, 21315, 36801, 31614, 20191, 35878, 20094, 40660, 38065, 38067, 21069, 28508, 36963, 27973, 35892, 22545, 23884, 27424, 27465, 26538, 21595, 33108, 32652, 22681, 34103, 24378, 25250, 27207, 38201, 25970, 24708, 26725, 30631, 20052, 20392, 24039, 38808, 25772, 32728, 23789, 20431, 31373, 20999, 33540, 19988, 24623, 31363, 38054, 20405, 20146, 31206, 29748, 21220, 33465, 25810, 31165, 23517, 27777, 38738, 36731, 27682, 20542, 21375, 28165, 25806, 26228, 27696, 24773, 39031, 35831, 24198, 29756, 31351, 31179, 19992, 37041, 29699, 27714, 22234, 37195, 27845, 36235, 21306, 34502, 26354, 36527, 23624, 39537, 28192, 33774, 33775, 33779, 33780, 33781, 33782, 33783, 33786, 33787, 33788, 33790, 33791, 33792, 33794, 33797, 33799, 33800, 33801, 33802, 33808, 33810, 33811, 33812, 33813, 33814, 33815, 33817, 33818, 33819, 33822, 33823, 33824, 33825, 33826, 33827, 33833, 33834, 33835, 33836, 33837, 33838, 33839, 33840, 33842, 33843, 33844, 33845, 33846, 33847, 33849, 33850, 33851, 33854, 33855, 33856, 33857, 33858, 33859, 33860, 33861, 33863, 33864, 33865, 33866, 33867, 33868, 33869, 33870, 33871, 33872, 33874, 33875, 33876, 33877, 33878, 33880, 33885, 33886, 33887, 33888, 33890, 33892, 33893, 33894, 33895, 33896, 33898, 33902, 33903, 33904, 33906, 33908, 33911, 33913, 33915, 33916, 21462, 23094, 40843, 36259, 21435, 22280, 39079, 26435, 37275, 27849, 20840, 30154, 25331, 29356, 21048, 21149, 32570, 28820, 30264, 21364, 40522, 27063, 30830, 38592, 35033, 32676, 28982, 29123, 20873, 26579, 29924, 22756, 25880, 22199, 35753, 39286, 25200, 32469, 24825, 28909, 22764, 20161, 20154, 24525, 38887, 20219, 35748, 20995, 22922, 32427, 25172, 20173, 26085, 25102, 33592, 33993, 33635, 34701, 29076, 28342, 23481, 32466, 20887, 25545, 26580, 32905, 33593, 34837, 20754, 23418, 22914, 36785, 20083, 27741, 20837, 35109, 36719, 38446, 34122, 29790, 38160, 38384, 28070, 33509, 24369, 25746, 27922, 33832, 33134, 40131, 22622, 36187, 19977, 21441, 33917, 33918, 33919, 33920, 33921, 33923, 33924, 33925, 33926, 33930, 33933, 33935, 33936, 33937, 33938, 33939, 33940, 33941, 33942, 33944, 33946, 33947, 33949, 33950, 33951, 33952, 33954, 33955, 33956, 33957, 33958, 33959, 33960, 33961, 33962, 33963, 33964, 33965, 33966, 33968, 33969, 33971, 33973, 33974, 33975, 33979, 33980, 33982, 33984, 33986, 33987, 33989, 33990, 33991, 33992, 33995, 33996, 33998, 33999, 34002, 34004, 34005, 34007, 34008, 34009, 34010, 34011, 34012, 34014, 34017, 34018, 34020, 34023, 34024, 34025, 34026, 34027, 34029, 34030, 34031, 34033, 34034, 34035, 34036, 34037, 34038, 34039, 34040, 34041, 34042, 34043, 34045, 34046, 34048, 34049, 34050, 20254, 25955, 26705, 21971, 20007, 25620, 39578, 25195, 23234, 29791, 33394, 28073, 26862, 20711, 33678, 30722, 26432, 21049, 27801, 32433, 20667, 21861, 29022, 31579, 26194, 29642, 33515, 26441, 23665, 21024, 29053, 34923, 38378, 38485, 25797, 36193, 33203, 21892, 27733, 25159, 32558, 22674, 20260, 21830, 36175, 26188, 19978, 23578, 35059, 26786, 25422, 31245, 28903, 33421, 21242, 38902, 23569, 21736, 37045, 32461, 22882, 36170, 34503, 33292, 33293, 36198, 25668, 23556, 24913, 28041, 31038, 35774, 30775, 30003, 21627, 20280, 36523, 28145, 23072, 32453, 31070, 27784, 23457, 23158, 29978, 32958, 24910, 28183, 22768, 29983, 29989, 29298, 21319, 32499, 34051, 34052, 34053, 34054, 34055, 34056, 34057, 34058, 34059, 34061, 34062, 34063, 34064, 34066, 34068, 34069, 34070, 34072, 34073, 34075, 34076, 34077, 34078, 34080, 34082, 34083, 34084, 34085, 34086, 34087, 34088, 34089, 34090, 34093, 34094, 34095, 34096, 34097, 34098, 34099, 34100, 34101, 34102, 34110, 34111, 34112, 34113, 34114, 34116, 34117, 34118, 34119, 34123, 34124, 34125, 34126, 34127, 34128, 34129, 34130, 34131, 34132, 34133, 34135, 34136, 34138, 34139, 34140, 34141, 34143, 34144, 34145, 34146, 34147, 34149, 34150, 34151, 34153, 34154, 34155, 34156, 34157, 34158, 34159, 34160, 34161, 34163, 34165, 34166, 34167, 34168, 34172, 34173, 34175, 34176, 34177, 30465, 30427, 21097, 32988, 22307, 24072, 22833, 29422, 26045, 28287, 35799, 23608, 34417, 21313, 30707, 25342, 26102, 20160, 39135, 34432, 23454, 35782, 21490, 30690, 20351, 23630, 39542, 22987, 24335, 31034, 22763, 19990, 26623, 20107, 25325, 35475, 36893, 21183, 26159, 21980, 22124, 36866, 20181, 20365, 37322, 39280, 27663, 24066, 24643, 23460, 35270, 35797, 25910, 25163, 39318, 23432, 23551, 25480, 21806, 21463, 30246, 20861, 34092, 26530, 26803, 27530, 25234, 36755, 21460, 33298, 28113, 30095, 20070, 36174, 23408, 29087, 34223, 26257, 26329, 32626, 34560, 40653, 40736, 23646, 26415, 36848, 26641, 26463, 25101, 31446, 22661, 24246, 25968, 28465, 34178, 34179, 34182, 34184, 34185, 34186, 34187, 34188, 34189, 34190, 34192, 34193, 34194, 34195, 34196, 34197, 34198, 34199, 34200, 34201, 34202, 34205, 34206, 34207, 34208, 34209, 34210, 34211, 34213, 34214, 34215, 34217, 34219, 34220, 34221, 34225, 34226, 34227, 34228, 34229, 34230, 34232, 34234, 34235, 34236, 34237, 34238, 34239, 34240, 34242, 34243, 34244, 34245, 34246, 34247, 34248, 34250, 34251, 34252, 34253, 34254, 34257, 34258, 34260, 34262, 34263, 34264, 34265, 34266, 34267, 34269, 34270, 34271, 34272, 34273, 34274, 34275, 34277, 34278, 34279, 34280, 34282, 34283, 34284, 34285, 34286, 34287, 34288, 34289, 34290, 34291, 34292, 34293, 34294, 34295, 34296, 24661, 21047, 32781, 25684, 34928, 29993, 24069, 26643, 25332, 38684, 21452, 29245, 35841, 27700, 30561, 31246, 21550, 30636, 39034, 33308, 35828, 30805, 26388, 28865, 26031, 25749, 22070, 24605, 31169, 21496, 19997, 27515, 32902, 23546, 21987, 22235, 20282, 20284, 39282, 24051, 26494, 32824, 24578, 39042, 36865, 23435, 35772, 35829, 25628, 33368, 25822, 22013, 33487, 37221, 20439, 32032, 36895, 31903, 20723, 22609, 28335, 23487, 35785, 32899, 37240, 33948, 31639, 34429, 38539, 38543, 32485, 39635, 30862, 23681, 31319, 36930, 38567, 31071, 23385, 25439, 31499, 34001, 26797, 21766, 32553, 29712, 32034, 38145, 25152, 22604, 20182, 23427, 22905, 22612, 34297, 34298, 34300, 34301, 34302, 34304, 34305, 34306, 34307, 34308, 34310, 34311, 34312, 34313, 34314, 34315, 34316, 34317, 34318, 34319, 34320, 34322, 34323, 34324, 34325, 34327, 34328, 34329, 34330, 34331, 34332, 34333, 34334, 34335, 34336, 34337, 34338, 34339, 34340, 34341, 34342, 34344, 34346, 34347, 34348, 34349, 34350, 34351, 34352, 34353, 34354, 34355, 34356, 34357, 34358, 34359, 34361, 34362, 34363, 34365, 34366, 34367, 34368, 34369, 34370, 34371, 34372, 34373, 34374, 34375, 34376, 34377, 34378, 34379, 34380, 34386, 34387, 34389, 34390, 34391, 34392, 34393, 34395, 34396, 34397, 34399, 34400, 34401, 34403, 34404, 34405, 34406, 34407, 34408, 34409, 34410, 29549, 25374, 36427, 36367, 32974, 33492, 25260, 21488, 27888, 37214, 22826, 24577, 27760, 22349, 25674, 36138, 30251, 28393, 22363, 27264, 30192, 28525, 35885, 35848, 22374, 27631, 34962, 30899, 25506, 21497, 28845, 27748, 22616, 25642, 22530, 26848, 33179, 21776, 31958, 20504, 36538, 28108, 36255, 28907, 25487, 28059, 28372, 32486, 33796, 26691, 36867, 28120, 38518, 35752, 22871, 29305, 34276, 33150, 30140, 35466, 26799, 21076, 36386, 38161, 25552, 39064, 36420, 21884, 20307, 26367, 22159, 24789, 28053, 21059, 23625, 22825, 28155, 22635, 3e4, 29980, 24684, 33300, 33094, 25361, 26465, 36834, 30522, 36339, 36148, 38081, 24086, 21381, 21548, 28867, 34413, 34415, 34416, 34418, 34419, 34420, 34421, 34422, 34423, 34424, 34435, 34436, 34437, 34438, 34439, 34440, 34441, 34446, 34447, 34448, 34449, 34450, 34452, 34454, 34455, 34456, 34457, 34458, 34459, 34462, 34463, 34464, 34465, 34466, 34469, 34470, 34475, 34477, 34478, 34482, 34483, 34487, 34488, 34489, 34491, 34492, 34493, 34494, 34495, 34497, 34498, 34499, 34501, 34504, 34508, 34509, 34514, 34515, 34517, 34518, 34519, 34522, 34524, 34525, 34528, 34529, 34530, 34531, 34533, 34534, 34535, 34536, 34538, 34539, 34540, 34543, 34549, 34550, 34551, 34554, 34555, 34556, 34557, 34559, 34561, 34564, 34565, 34566, 34571, 34572, 34574, 34575, 34576, 34577, 34580, 34582, 27712, 24311, 20572, 20141, 24237, 25402, 33351, 36890, 26704, 37230, 30643, 21516, 38108, 24420, 31461, 26742, 25413, 31570, 32479, 30171, 20599, 25237, 22836, 36879, 20984, 31171, 31361, 22270, 24466, 36884, 28034, 23648, 22303, 21520, 20820, 28237, 22242, 25512, 39059, 33151, 34581, 35114, 36864, 21534, 23663, 33216, 25302, 25176, 33073, 40501, 38464, 39534, 39548, 26925, 22949, 25299, 21822, 25366, 21703, 34521, 27964, 23043, 29926, 34972, 27498, 22806, 35916, 24367, 28286, 29609, 39037, 20024, 28919, 23436, 30871, 25405, 26202, 30358, 24779, 23451, 23113, 19975, 33109, 27754, 29579, 20129, 26505, 32593, 24448, 26106, 26395, 24536, 22916, 23041, 34585, 34587, 34589, 34591, 34592, 34596, 34598, 34599, 34600, 34602, 34603, 34604, 34605, 34607, 34608, 34610, 34611, 34613, 34614, 34616, 34617, 34618, 34620, 34621, 34624, 34625, 34626, 34627, 34628, 34629, 34630, 34634, 34635, 34637, 34639, 34640, 34641, 34642, 34644, 34645, 34646, 34648, 34650, 34651, 34652, 34653, 34654, 34655, 34657, 34658, 34662, 34663, 34664, 34665, 34666, 34667, 34668, 34669, 34671, 34673, 34674, 34675, 34677, 34679, 34680, 34681, 34682, 34687, 34688, 34689, 34692, 34694, 34695, 34697, 34698, 34700, 34702, 34703, 34704, 34705, 34706, 34708, 34709, 34710, 34712, 34713, 34714, 34715, 34716, 34717, 34718, 34720, 34721, 34722, 34723, 34724, 24013, 24494, 21361, 38886, 36829, 26693, 22260, 21807, 24799, 20026, 28493, 32500, 33479, 33806, 22996, 20255, 20266, 23614, 32428, 26410, 34074, 21619, 30031, 32963, 21890, 39759, 20301, 28205, 35859, 23561, 24944, 21355, 30239, 28201, 34442, 25991, 38395, 32441, 21563, 31283, 32010, 38382, 21985, 32705, 29934, 25373, 34583, 28065, 31389, 25105, 26017, 21351, 25569, 27779, 24043, 21596, 38056, 20044, 27745, 35820, 23627, 26080, 33436, 26791, 21566, 21556, 27595, 27494, 20116, 25410, 21320, 33310, 20237, 20398, 22366, 25098, 38654, 26212, 29289, 21247, 21153, 24735, 35823, 26132, 29081, 26512, 35199, 30802, 30717, 26224, 22075, 21560, 38177, 29306, 34725, 34726, 34727, 34729, 34730, 34734, 34736, 34737, 34738, 34740, 34742, 34743, 34744, 34745, 34747, 34748, 34750, 34751, 34753, 34754, 34755, 34756, 34757, 34759, 34760, 34761, 34764, 34765, 34766, 34767, 34768, 34772, 34773, 34774, 34775, 34776, 34777, 34778, 34780, 34781, 34782, 34783, 34785, 34786, 34787, 34788, 34790, 34791, 34792, 34793, 34795, 34796, 34797, 34799, 34800, 34801, 34802, 34803, 34804, 34805, 34806, 34807, 34808, 34810, 34811, 34812, 34813, 34815, 34816, 34817, 34818, 34820, 34821, 34822, 34823, 34824, 34825, 34827, 34828, 34829, 34830, 34831, 34832, 34833, 34834, 34836, 34839, 34840, 34841, 34842, 34844, 34845, 34846, 34847, 34848, 34851, 31232, 24687, 24076, 24713, 33181, 22805, 24796, 29060, 28911, 28330, 27728, 29312, 27268, 34989, 24109, 20064, 23219, 21916, 38115, 27927, 31995, 38553, 25103, 32454, 30606, 34430, 21283, 38686, 36758, 26247, 23777, 20384, 29421, 19979, 21414, 22799, 21523, 25472, 38184, 20808, 20185, 40092, 32420, 21688, 36132, 34900, 33335, 38386, 28046, 24358, 23244, 26174, 38505, 29616, 29486, 21439, 33146, 39301, 32673, 23466, 38519, 38480, 32447, 30456, 21410, 38262, 39321, 31665, 35140, 28248, 20065, 32724, 31077, 35814, 24819, 21709, 20139, 39033, 24055, 27233, 20687, 21521, 35937, 33831, 30813, 38660, 21066, 21742, 22179, 38144, 28040, 23477, 28102, 26195, 34852, 34853, 34854, 34855, 34856, 34857, 34858, 34859, 34860, 34861, 34862, 34863, 34864, 34865, 34867, 34868, 34869, 34870, 34871, 34872, 34874, 34875, 34877, 34878, 34879, 34881, 34882, 34883, 34886, 34887, 34888, 34889, 34890, 34891, 34894, 34895, 34896, 34897, 34898, 34899, 34901, 34902, 34904, 34906, 34907, 34908, 34909, 34910, 34911, 34912, 34918, 34919, 34922, 34925, 34927, 34929, 34931, 34932, 34933, 34934, 34936, 34937, 34938, 34939, 34940, 34944, 34947, 34950, 34951, 34953, 34954, 34956, 34958, 34959, 34960, 34961, 34963, 34964, 34965, 34967, 34968, 34969, 34970, 34971, 34973, 34974, 34975, 34976, 34977, 34979, 34981, 34982, 34983, 34984, 34985, 34986, 23567, 23389, 26657, 32918, 21880, 31505, 25928, 26964, 20123, 27463, 34638, 38795, 21327, 25375, 25658, 37034, 26012, 32961, 35856, 20889, 26800, 21368, 34809, 25032, 27844, 27899, 35874, 23633, 34218, 33455, 38156, 27427, 36763, 26032, 24571, 24515, 20449, 34885, 26143, 33125, 29481, 24826, 20852, 21009, 22411, 24418, 37026, 34892, 37266, 24184, 26447, 24615, 22995, 20804, 20982, 33016, 21256, 27769, 38596, 29066, 20241, 20462, 32670, 26429, 21957, 38152, 31168, 34966, 32483, 22687, 25100, 38656, 34394, 22040, 39035, 24464, 35768, 33988, 37207, 21465, 26093, 24207, 30044, 24676, 32110, 23167, 32490, 32493, 36713, 21927, 23459, 24748, 26059, 29572, 34988, 34990, 34991, 34992, 34994, 34995, 34996, 34997, 34998, 35e3, 35001, 35002, 35003, 35005, 35006, 35007, 35008, 35011, 35012, 35015, 35016, 35018, 35019, 35020, 35021, 35023, 35024, 35025, 35027, 35030, 35031, 35034, 35035, 35036, 35037, 35038, 35040, 35041, 35046, 35047, 35049, 35050, 35051, 35052, 35053, 35054, 35055, 35058, 35061, 35062, 35063, 35066, 35067, 35069, 35071, 35072, 35073, 35075, 35076, 35077, 35078, 35079, 35080, 35081, 35083, 35084, 35085, 35086, 35087, 35089, 35092, 35093, 35094, 35095, 35096, 35100, 35101, 35102, 35103, 35104, 35106, 35107, 35108, 35110, 35111, 35112, 35113, 35116, 35117, 35118, 35119, 35121, 35122, 35123, 35125, 35127, 36873, 30307, 30505, 32474, 38772, 34203, 23398, 31348, 38634, 34880, 21195, 29071, 24490, 26092, 35810, 23547, 39535, 24033, 27529, 27739, 35757, 35759, 36874, 36805, 21387, 25276, 40486, 40493, 21568, 20011, 33469, 29273, 34460, 23830, 34905, 28079, 38597, 21713, 20122, 35766, 28937, 21693, 38409, 28895, 28153, 30416, 20005, 30740, 34578, 23721, 24310, 35328, 39068, 38414, 28814, 27839, 22852, 25513, 30524, 34893, 28436, 33395, 22576, 29141, 21388, 30746, 38593, 21761, 24422, 28976, 23476, 35866, 39564, 27523, 22830, 40495, 31207, 26472, 25196, 20335, 30113, 32650, 27915, 38451, 27687, 20208, 30162, 20859, 26679, 28478, 36992, 33136, 22934, 29814, 35128, 35129, 35130, 35131, 35132, 35133, 35134, 35135, 35136, 35138, 35139, 35141, 35142, 35143, 35144, 35145, 35146, 35147, 35148, 35149, 35150, 35151, 35152, 35153, 35154, 35155, 35156, 35157, 35158, 35159, 35160, 35161, 35162, 35163, 35164, 35165, 35168, 35169, 35170, 35171, 35172, 35173, 35175, 35176, 35177, 35178, 35179, 35180, 35181, 35182, 35183, 35184, 35185, 35186, 35187, 35188, 35189, 35190, 35191, 35192, 35193, 35194, 35196, 35197, 35198, 35200, 35202, 35204, 35205, 35207, 35208, 35209, 35210, 35211, 35212, 35213, 35214, 35215, 35216, 35217, 35218, 35219, 35220, 35221, 35222, 35223, 35224, 35225, 35226, 35227, 35228, 35229, 35230, 35231, 35232, 35233, 25671, 23591, 36965, 31377, 35875, 23002, 21676, 33280, 33647, 35201, 32768, 26928, 22094, 32822, 29239, 37326, 20918, 20063, 39029, 25494, 19994, 21494, 26355, 33099, 22812, 28082, 19968, 22777, 21307, 25558, 38129, 20381, 20234, 34915, 39056, 22839, 36951, 31227, 20202, 33008, 30097, 27778, 23452, 23016, 24413, 26885, 34433, 20506, 24050, 20057, 30691, 20197, 33402, 25233, 26131, 37009, 23673, 20159, 24441, 33222, 36920, 32900, 30123, 20134, 35028, 24847, 27589, 24518, 20041, 30410, 28322, 35811, 35758, 35850, 35793, 24322, 32764, 32716, 32462, 33589, 33643, 22240, 27575, 38899, 38452, 23035, 21535, 38134, 28139, 23493, 39278, 23609, 24341, 38544, 35234, 35235, 35236, 35237, 35238, 35239, 35240, 35241, 35242, 35243, 35244, 35245, 35246, 35247, 35248, 35249, 35250, 35251, 35252, 35253, 35254, 35255, 35256, 35257, 35258, 35259, 35260, 35261, 35262, 35263, 35264, 35267, 35277, 35283, 35284, 35285, 35287, 35288, 35289, 35291, 35293, 35295, 35296, 35297, 35298, 35300, 35303, 35304, 35305, 35306, 35308, 35309, 35310, 35312, 35313, 35314, 35316, 35317, 35318, 35319, 35320, 35321, 35322, 35323, 35324, 35325, 35326, 35327, 35329, 35330, 35331, 35332, 35333, 35334, 35336, 35337, 35338, 35339, 35340, 35341, 35342, 35343, 35344, 35345, 35346, 35347, 35348, 35349, 35350, 35351, 35352, 35353, 35354, 35355, 35356, 35357, 21360, 33521, 27185, 23156, 40560, 24212, 32552, 33721, 33828, 33829, 33639, 34631, 36814, 36194, 30408, 24433, 39062, 30828, 26144, 21727, 25317, 20323, 33219, 30152, 24248, 38605, 36362, 34553, 21647, 27891, 28044, 27704, 24703, 21191, 29992, 24189, 20248, 24736, 24551, 23588, 30001, 37038, 38080, 29369, 27833, 28216, 37193, 26377, 21451, 21491, 20305, 37321, 35825, 21448, 24188, 36802, 28132, 20110, 30402, 27014, 34398, 24858, 33286, 20313, 20446, 36926, 40060, 24841, 28189, 28180, 38533, 20104, 23089, 38632, 19982, 23679, 31161, 23431, 35821, 32701, 29577, 22495, 33419, 37057, 21505, 36935, 21947, 23786, 24481, 24840, 27442, 29425, 32946, 35465, 35358, 35359, 35360, 35361, 35362, 35363, 35364, 35365, 35366, 35367, 35368, 35369, 35370, 35371, 35372, 35373, 35374, 35375, 35376, 35377, 35378, 35379, 35380, 35381, 35382, 35383, 35384, 35385, 35386, 35387, 35388, 35389, 35391, 35392, 35393, 35394, 35395, 35396, 35397, 35398, 35399, 35401, 35402, 35403, 35404, 35405, 35406, 35407, 35408, 35409, 35410, 35411, 35412, 35413, 35414, 35415, 35416, 35417, 35418, 35419, 35420, 35421, 35422, 35423, 35424, 35425, 35426, 35427, 35428, 35429, 35430, 35431, 35432, 35433, 35434, 35435, 35436, 35437, 35438, 35439, 35440, 35441, 35442, 35443, 35444, 35445, 35446, 35447, 35448, 35450, 35451, 35452, 35453, 35454, 35455, 35456, 28020, 23507, 35029, 39044, 35947, 39533, 40499, 28170, 20900, 20803, 22435, 34945, 21407, 25588, 36757, 22253, 21592, 22278, 29503, 28304, 32536, 36828, 33489, 24895, 24616, 38498, 26352, 32422, 36234, 36291, 38053, 23731, 31908, 26376, 24742, 38405, 32792, 20113, 37095, 21248, 38504, 20801, 36816, 34164, 37213, 26197, 38901, 23381, 21277, 30776, 26434, 26685, 21705, 28798, 23472, 36733, 20877, 22312, 21681, 25874, 26242, 36190, 36163, 33039, 33900, 36973, 31967, 20991, 34299, 26531, 26089, 28577, 34468, 36481, 22122, 36896, 30338, 28790, 29157, 36131, 25321, 21017, 27901, 36156, 24590, 22686, 24974, 26366, 36192, 25166, 21939, 28195, 26413, 36711, 35457, 35458, 35459, 35460, 35461, 35462, 35463, 35464, 35467, 35468, 35469, 35470, 35471, 35472, 35473, 35474, 35476, 35477, 35478, 35479, 35480, 35481, 35482, 35483, 35484, 35485, 35486, 35487, 35488, 35489, 35490, 35491, 35492, 35493, 35494, 35495, 35496, 35497, 35498, 35499, 35500, 35501, 35502, 35503, 35504, 35505, 35506, 35507, 35508, 35509, 35510, 35511, 35512, 35513, 35514, 35515, 35516, 35517, 35518, 35519, 35520, 35521, 35522, 35523, 35524, 35525, 35526, 35527, 35528, 35529, 35530, 35531, 35532, 35533, 35534, 35535, 35536, 35537, 35538, 35539, 35540, 35541, 35542, 35543, 35544, 35545, 35546, 35547, 35548, 35549, 35550, 35551, 35552, 35553, 35554, 35555, 38113, 38392, 30504, 26629, 27048, 21643, 20045, 28856, 35784, 25688, 25995, 23429, 31364, 20538, 23528, 30651, 27617, 35449, 31896, 27838, 30415, 26025, 36759, 23853, 23637, 34360, 26632, 21344, 25112, 31449, 28251, 32509, 27167, 31456, 24432, 28467, 24352, 25484, 28072, 26454, 19976, 24080, 36134, 20183, 32960, 30260, 38556, 25307, 26157, 25214, 27836, 36213, 29031, 32617, 20806, 32903, 21484, 36974, 25240, 21746, 34544, 36761, 32773, 38167, 34071, 36825, 27993, 29645, 26015, 30495, 29956, 30759, 33275, 36126, 38024, 20390, 26517, 30137, 35786, 38663, 25391, 38215, 38453, 33976, 25379, 30529, 24449, 29424, 20105, 24596, 25972, 25327, 27491, 25919, 35556, 35557, 35558, 35559, 35560, 35561, 35562, 35563, 35564, 35565, 35566, 35567, 35568, 35569, 35570, 35571, 35572, 35573, 35574, 35575, 35576, 35577, 35578, 35579, 35580, 35581, 35582, 35583, 35584, 35585, 35586, 35587, 35588, 35589, 35590, 35592, 35593, 35594, 35595, 35596, 35597, 35598, 35599, 35600, 35601, 35602, 35603, 35604, 35605, 35606, 35607, 35608, 35609, 35610, 35611, 35612, 35613, 35614, 35615, 35616, 35617, 35618, 35619, 35620, 35621, 35623, 35624, 35625, 35626, 35627, 35628, 35629, 35630, 35631, 35632, 35633, 35634, 35635, 35636, 35637, 35638, 35639, 35640, 35641, 35642, 35643, 35644, 35645, 35646, 35647, 35648, 35649, 35650, 35651, 35652, 35653, 24103, 30151, 37073, 35777, 33437, 26525, 25903, 21553, 34584, 30693, 32930, 33026, 27713, 20043, 32455, 32844, 30452, 26893, 27542, 25191, 20540, 20356, 22336, 25351, 27490, 36286, 21482, 26088, 32440, 24535, 25370, 25527, 33267, 33268, 32622, 24092, 23769, 21046, 26234, 31209, 31258, 36136, 28825, 30164, 28382, 27835, 31378, 20013, 30405, 24544, 38047, 34935, 32456, 31181, 32959, 37325, 20210, 20247, 33311, 21608, 24030, 27954, 35788, 31909, 36724, 32920, 24090, 21650, 30385, 23449, 26172, 39588, 29664, 26666, 34523, 26417, 29482, 35832, 35803, 36880, 31481, 28891, 29038, 25284, 30633, 22065, 20027, 33879, 26609, 21161, 34496, 36142, 38136, 31569, 35654, 35655, 35656, 35657, 35658, 35659, 35660, 35661, 35662, 35663, 35664, 35665, 35666, 35667, 35668, 35669, 35670, 35671, 35672, 35673, 35674, 35675, 35676, 35677, 35678, 35679, 35680, 35681, 35682, 35683, 35684, 35685, 35687, 35688, 35689, 35690, 35691, 35693, 35694, 35695, 35696, 35697, 35698, 35699, 35700, 35701, 35702, 35703, 35704, 35705, 35706, 35707, 35708, 35709, 35710, 35711, 35712, 35713, 35714, 35715, 35716, 35717, 35718, 35719, 35720, 35721, 35722, 35723, 35724, 35725, 35726, 35727, 35728, 35729, 35730, 35731, 35732, 35733, 35734, 35735, 35736, 35737, 35738, 35739, 35740, 35741, 35742, 35743, 35756, 35761, 35771, 35783, 35792, 35818, 35849, 35870, 20303, 27880, 31069, 39547, 25235, 29226, 25341, 19987, 30742, 36716, 25776, 36186, 31686, 26729, 24196, 35013, 22918, 25758, 22766, 29366, 26894, 38181, 36861, 36184, 22368, 32512, 35846, 20934, 25417, 25305, 21331, 26700, 29730, 33537, 37196, 21828, 30528, 28796, 27978, 20857, 21672, 36164, 23039, 28363, 28100, 23388, 32043, 20180, 31869, 28371, 23376, 33258, 28173, 23383, 39683, 26837, 36394, 23447, 32508, 24635, 32437, 37049, 36208, 22863, 25549, 31199, 36275, 21330, 26063, 31062, 35781, 38459, 32452, 38075, 32386, 22068, 37257, 26368, 32618, 23562, 36981, 26152, 24038, 20304, 26590, 20570, 20316, 22352, 24231, 59408, 59409, 59410, 59411, 59412, 35896, 35897, 35898, 35899, 35900, 35901, 35902, 35903, 35904, 35906, 35907, 35908, 35909, 35912, 35914, 35915, 35917, 35918, 35919, 35920, 35921, 35922, 35923, 35924, 35926, 35927, 35928, 35929, 35931, 35932, 35933, 35934, 35935, 35936, 35939, 35940, 35941, 35942, 35943, 35944, 35945, 35948, 35949, 35950, 35951, 35952, 35953, 35954, 35956, 35957, 35958, 35959, 35963, 35964, 35965, 35966, 35967, 35968, 35969, 35971, 35972, 35974, 35975, 35976, 35979, 35981, 35982, 35983, 35984, 35985, 35986, 35987, 35989, 35990, 35991, 35993, 35994, 35995, 35996, 35997, 35998, 35999, 36e3, 36001, 36002, 36003, 36004, 36005, 36006, 36007, 36008, 36009, 36010, 36011, 36012, 36013, 20109, 19980, 20800, 19984, 24319, 21317, 19989, 20120, 19998, 39730, 23404, 22121, 20008, 31162, 20031, 21269, 20039, 22829, 29243, 21358, 27664, 22239, 32996, 39319, 27603, 30590, 40727, 20022, 20127, 40720, 20060, 20073, 20115, 33416, 23387, 21868, 22031, 20164, 21389, 21405, 21411, 21413, 21422, 38757, 36189, 21274, 21493, 21286, 21294, 21310, 36188, 21350, 21347, 20994, 21e3, 21006, 21037, 21043, 21055, 21056, 21068, 21086, 21089, 21084, 33967, 21117, 21122, 21121, 21136, 21139, 20866, 32596, 20155, 20163, 20169, 20162, 20200, 20193, 20203, 20190, 20251, 20211, 20258, 20324, 20213, 20261, 20263, 20233, 20267, 20318, 20327, 25912, 20314, 20317, 36014, 36015, 36016, 36017, 36018, 36019, 36020, 36021, 36022, 36023, 36024, 36025, 36026, 36027, 36028, 36029, 36030, 36031, 36032, 36033, 36034, 36035, 36036, 36037, 36038, 36039, 36040, 36041, 36042, 36043, 36044, 36045, 36046, 36047, 36048, 36049, 36050, 36051, 36052, 36053, 36054, 36055, 36056, 36057, 36058, 36059, 36060, 36061, 36062, 36063, 36064, 36065, 36066, 36067, 36068, 36069, 36070, 36071, 36072, 36073, 36074, 36075, 36076, 36077, 36078, 36079, 36080, 36081, 36082, 36083, 36084, 36085, 36086, 36087, 36088, 36089, 36090, 36091, 36092, 36093, 36094, 36095, 36096, 36097, 36098, 36099, 36100, 36101, 36102, 36103, 36104, 36105, 36106, 36107, 36108, 36109, 20319, 20311, 20274, 20285, 20342, 20340, 20369, 20361, 20355, 20367, 20350, 20347, 20394, 20348, 20396, 20372, 20454, 20456, 20458, 20421, 20442, 20451, 20444, 20433, 20447, 20472, 20521, 20556, 20467, 20524, 20495, 20526, 20525, 20478, 20508, 20492, 20517, 20520, 20606, 20547, 20565, 20552, 20558, 20588, 20603, 20645, 20647, 20649, 20666, 20694, 20742, 20717, 20716, 20710, 20718, 20743, 20747, 20189, 27709, 20312, 20325, 20430, 40864, 27718, 31860, 20846, 24061, 40649, 39320, 20865, 22804, 21241, 21261, 35335, 21264, 20971, 22809, 20821, 20128, 20822, 20147, 34926, 34980, 20149, 33044, 35026, 31104, 23348, 34819, 32696, 20907, 20913, 20925, 20924, 36110, 36111, 36112, 36113, 36114, 36115, 36116, 36117, 36118, 36119, 36120, 36121, 36122, 36123, 36124, 36128, 36177, 36178, 36183, 36191, 36197, 36200, 36201, 36202, 36204, 36206, 36207, 36209, 36210, 36216, 36217, 36218, 36219, 36220, 36221, 36222, 36223, 36224, 36226, 36227, 36230, 36231, 36232, 36233, 36236, 36237, 36238, 36239, 36240, 36242, 36243, 36245, 36246, 36247, 36248, 36249, 36250, 36251, 36252, 36253, 36254, 36256, 36257, 36258, 36260, 36261, 36262, 36263, 36264, 36265, 36266, 36267, 36268, 36269, 36270, 36271, 36272, 36274, 36278, 36279, 36281, 36283, 36285, 36288, 36289, 36290, 36293, 36295, 36296, 36297, 36298, 36301, 36304, 36306, 36307, 36308, 20935, 20886, 20898, 20901, 35744, 35750, 35751, 35754, 35764, 35765, 35767, 35778, 35779, 35787, 35791, 35790, 35794, 35795, 35796, 35798, 35800, 35801, 35804, 35807, 35808, 35812, 35816, 35817, 35822, 35824, 35827, 35830, 35833, 35836, 35839, 35840, 35842, 35844, 35847, 35852, 35855, 35857, 35858, 35860, 35861, 35862, 35865, 35867, 35864, 35869, 35871, 35872, 35873, 35877, 35879, 35882, 35883, 35886, 35887, 35890, 35891, 35893, 35894, 21353, 21370, 38429, 38434, 38433, 38449, 38442, 38461, 38460, 38466, 38473, 38484, 38495, 38503, 38508, 38514, 38516, 38536, 38541, 38551, 38576, 37015, 37019, 37021, 37017, 37036, 37025, 37044, 37043, 37046, 37050, 36309, 36312, 36313, 36316, 36320, 36321, 36322, 36325, 36326, 36327, 36329, 36333, 36334, 36336, 36337, 36338, 36340, 36342, 36348, 36350, 36351, 36352, 36353, 36354, 36355, 36356, 36358, 36359, 36360, 36363, 36365, 36366, 36368, 36369, 36370, 36371, 36373, 36374, 36375, 36376, 36377, 36378, 36379, 36380, 36384, 36385, 36388, 36389, 36390, 36391, 36392, 36395, 36397, 36400, 36402, 36403, 36404, 36406, 36407, 36408, 36411, 36412, 36414, 36415, 36419, 36421, 36422, 36428, 36429, 36430, 36431, 36432, 36435, 36436, 36437, 36438, 36439, 36440, 36442, 36443, 36444, 36445, 36446, 36447, 36448, 36449, 36450, 36451, 36452, 36453, 36455, 36456, 36458, 36459, 36462, 36465, 37048, 37040, 37071, 37061, 37054, 37072, 37060, 37063, 37075, 37094, 37090, 37084, 37079, 37083, 37099, 37103, 37118, 37124, 37154, 37150, 37155, 37169, 37167, 37177, 37187, 37190, 21005, 22850, 21154, 21164, 21165, 21182, 21759, 21200, 21206, 21232, 21471, 29166, 30669, 24308, 20981, 20988, 39727, 21430, 24321, 30042, 24047, 22348, 22441, 22433, 22654, 22716, 22725, 22737, 22313, 22316, 22314, 22323, 22329, 22318, 22319, 22364, 22331, 22338, 22377, 22405, 22379, 22406, 22396, 22395, 22376, 22381, 22390, 22387, 22445, 22436, 22412, 22450, 22479, 22439, 22452, 22419, 22432, 22485, 22488, 22490, 22489, 22482, 22456, 22516, 22511, 22520, 22500, 22493, 36467, 36469, 36471, 36472, 36473, 36474, 36475, 36477, 36478, 36480, 36482, 36483, 36484, 36486, 36488, 36489, 36490, 36491, 36492, 36493, 36494, 36497, 36498, 36499, 36501, 36502, 36503, 36504, 36505, 36506, 36507, 36509, 36511, 36512, 36513, 36514, 36515, 36516, 36517, 36518, 36519, 36520, 36521, 36522, 36525, 36526, 36528, 36529, 36531, 36532, 36533, 36534, 36535, 36536, 36537, 36539, 36540, 36541, 36542, 36543, 36544, 36545, 36546, 36547, 36548, 36549, 36550, 36551, 36552, 36553, 36554, 36555, 36556, 36557, 36559, 36560, 36561, 36562, 36563, 36564, 36565, 36566, 36567, 36568, 36569, 36570, 36571, 36572, 36573, 36574, 36575, 36576, 36577, 36578, 36579, 36580, 22539, 22541, 22525, 22509, 22528, 22558, 22553, 22596, 22560, 22629, 22636, 22657, 22665, 22682, 22656, 39336, 40729, 25087, 33401, 33405, 33407, 33423, 33418, 33448, 33412, 33422, 33425, 33431, 33433, 33451, 33464, 33470, 33456, 33480, 33482, 33507, 33432, 33463, 33454, 33483, 33484, 33473, 33449, 33460, 33441, 33450, 33439, 33476, 33486, 33444, 33505, 33545, 33527, 33508, 33551, 33543, 33500, 33524, 33490, 33496, 33548, 33531, 33491, 33553, 33562, 33542, 33556, 33557, 33504, 33493, 33564, 33617, 33627, 33628, 33544, 33682, 33596, 33588, 33585, 33691, 33630, 33583, 33615, 33607, 33603, 33631, 33600, 33559, 33632, 33581, 33594, 33587, 33638, 33637, 36581, 36582, 36583, 36584, 36585, 36586, 36587, 36588, 36589, 36590, 36591, 36592, 36593, 36594, 36595, 36596, 36597, 36598, 36599, 36600, 36601, 36602, 36603, 36604, 36605, 36606, 36607, 36608, 36609, 36610, 36611, 36612, 36613, 36614, 36615, 36616, 36617, 36618, 36619, 36620, 36621, 36622, 36623, 36624, 36625, 36626, 36627, 36628, 36629, 36630, 36631, 36632, 36633, 36634, 36635, 36636, 36637, 36638, 36639, 36640, 36641, 36642, 36643, 36644, 36645, 36646, 36647, 36648, 36649, 36650, 36651, 36652, 36653, 36654, 36655, 36656, 36657, 36658, 36659, 36660, 36661, 36662, 36663, 36664, 36665, 36666, 36667, 36668, 36669, 36670, 36671, 36672, 36673, 36674, 36675, 36676, 33640, 33563, 33641, 33644, 33642, 33645, 33646, 33712, 33656, 33715, 33716, 33696, 33706, 33683, 33692, 33669, 33660, 33718, 33705, 33661, 33720, 33659, 33688, 33694, 33704, 33722, 33724, 33729, 33793, 33765, 33752, 22535, 33816, 33803, 33757, 33789, 33750, 33820, 33848, 33809, 33798, 33748, 33759, 33807, 33795, 33784, 33785, 33770, 33733, 33728, 33830, 33776, 33761, 33884, 33873, 33882, 33881, 33907, 33927, 33928, 33914, 33929, 33912, 33852, 33862, 33897, 33910, 33932, 33934, 33841, 33901, 33985, 33997, 34e3, 34022, 33981, 34003, 33994, 33983, 33978, 34016, 33953, 33977, 33972, 33943, 34021, 34019, 34060, 29965, 34104, 34032, 34105, 34079, 34106, 36677, 36678, 36679, 36680, 36681, 36682, 36683, 36684, 36685, 36686, 36687, 36688, 36689, 36690, 36691, 36692, 36693, 36694, 36695, 36696, 36697, 36698, 36699, 36700, 36701, 36702, 36703, 36704, 36705, 36706, 36707, 36708, 36709, 36714, 36736, 36748, 36754, 36765, 36768, 36769, 36770, 36772, 36773, 36774, 36775, 36778, 36780, 36781, 36782, 36783, 36786, 36787, 36788, 36789, 36791, 36792, 36794, 36795, 36796, 36799, 36800, 36803, 36806, 36809, 36810, 36811, 36812, 36813, 36815, 36818, 36822, 36823, 36826, 36832, 36833, 36835, 36839, 36844, 36847, 36849, 36850, 36852, 36853, 36854, 36858, 36859, 36860, 36862, 36863, 36871, 36872, 36876, 36878, 36883, 36885, 36888, 34134, 34107, 34047, 34044, 34137, 34120, 34152, 34148, 34142, 34170, 30626, 34115, 34162, 34171, 34212, 34216, 34183, 34191, 34169, 34222, 34204, 34181, 34233, 34231, 34224, 34259, 34241, 34268, 34303, 34343, 34309, 34345, 34326, 34364, 24318, 24328, 22844, 22849, 32823, 22869, 22874, 22872, 21263, 23586, 23589, 23596, 23604, 25164, 25194, 25247, 25275, 25290, 25306, 25303, 25326, 25378, 25334, 25401, 25419, 25411, 25517, 25590, 25457, 25466, 25486, 25524, 25453, 25516, 25482, 25449, 25518, 25532, 25586, 25592, 25568, 25599, 25540, 25566, 25550, 25682, 25542, 25534, 25669, 25665, 25611, 25627, 25632, 25612, 25638, 25633, 25694, 25732, 25709, 25750, 36889, 36892, 36899, 36900, 36901, 36903, 36904, 36905, 36906, 36907, 36908, 36912, 36913, 36914, 36915, 36916, 36919, 36921, 36922, 36925, 36927, 36928, 36931, 36933, 36934, 36936, 36937, 36938, 36939, 36940, 36942, 36948, 36949, 36950, 36953, 36954, 36956, 36957, 36958, 36959, 36960, 36961, 36964, 36966, 36967, 36969, 36970, 36971, 36972, 36975, 36976, 36977, 36978, 36979, 36982, 36983, 36984, 36985, 36986, 36987, 36988, 36990, 36993, 36996, 36997, 36998, 36999, 37001, 37002, 37004, 37005, 37006, 37007, 37008, 37010, 37012, 37014, 37016, 37018, 37020, 37022, 37023, 37024, 37028, 37029, 37031, 37032, 37033, 37035, 37037, 37042, 37047, 37052, 37053, 37055, 37056, 25722, 25783, 25784, 25753, 25786, 25792, 25808, 25815, 25828, 25826, 25865, 25893, 25902, 24331, 24530, 29977, 24337, 21343, 21489, 21501, 21481, 21480, 21499, 21522, 21526, 21510, 21579, 21586, 21587, 21588, 21590, 21571, 21537, 21591, 21593, 21539, 21554, 21634, 21652, 21623, 21617, 21604, 21658, 21659, 21636, 21622, 21606, 21661, 21712, 21677, 21698, 21684, 21714, 21671, 21670, 21715, 21716, 21618, 21667, 21717, 21691, 21695, 21708, 21721, 21722, 21724, 21673, 21674, 21668, 21725, 21711, 21726, 21787, 21735, 21792, 21757, 21780, 21747, 21794, 21795, 21775, 21777, 21799, 21802, 21863, 21903, 21941, 21833, 21869, 21825, 21845, 21823, 21840, 21820, 37058, 37059, 37062, 37064, 37065, 37067, 37068, 37069, 37074, 37076, 37077, 37078, 37080, 37081, 37082, 37086, 37087, 37088, 37091, 37092, 37093, 37097, 37098, 37100, 37102, 37104, 37105, 37106, 37107, 37109, 37110, 37111, 37113, 37114, 37115, 37116, 37119, 37120, 37121, 37123, 37125, 37126, 37127, 37128, 37129, 37130, 37131, 37132, 37133, 37134, 37135, 37136, 37137, 37138, 37139, 37140, 37141, 37142, 37143, 37144, 37146, 37147, 37148, 37149, 37151, 37152, 37153, 37156, 37157, 37158, 37159, 37160, 37161, 37162, 37163, 37164, 37165, 37166, 37168, 37170, 37171, 37172, 37173, 37174, 37175, 37176, 37178, 37179, 37180, 37181, 37182, 37183, 37184, 37185, 37186, 37188, 21815, 21846, 21877, 21878, 21879, 21811, 21808, 21852, 21899, 21970, 21891, 21937, 21945, 21896, 21889, 21919, 21886, 21974, 21905, 21883, 21983, 21949, 21950, 21908, 21913, 21994, 22007, 21961, 22047, 21969, 21995, 21996, 21972, 21990, 21981, 21956, 21999, 21989, 22002, 22003, 21964, 21965, 21992, 22005, 21988, 36756, 22046, 22024, 22028, 22017, 22052, 22051, 22014, 22016, 22055, 22061, 22104, 22073, 22103, 22060, 22093, 22114, 22105, 22108, 22092, 22100, 22150, 22116, 22129, 22123, 22139, 22140, 22149, 22163, 22191, 22228, 22231, 22237, 22241, 22261, 22251, 22265, 22271, 22276, 22282, 22281, 22300, 24079, 24089, 24084, 24081, 24113, 24123, 24124, 37189, 37191, 37192, 37201, 37203, 37204, 37205, 37206, 37208, 37209, 37211, 37212, 37215, 37216, 37222, 37223, 37224, 37227, 37229, 37235, 37242, 37243, 37244, 37248, 37249, 37250, 37251, 37252, 37254, 37256, 37258, 37262, 37263, 37267, 37268, 37269, 37270, 37271, 37272, 37273, 37276, 37277, 37278, 37279, 37280, 37281, 37284, 37285, 37286, 37287, 37288, 37289, 37291, 37292, 37296, 37297, 37298, 37299, 37302, 37303, 37304, 37305, 37307, 37308, 37309, 37310, 37311, 37312, 37313, 37314, 37315, 37316, 37317, 37318, 37320, 37323, 37328, 37330, 37331, 37332, 37333, 37334, 37335, 37336, 37337, 37338, 37339, 37341, 37342, 37343, 37344, 37345, 37346, 37347, 37348, 37349, 24119, 24132, 24148, 24155, 24158, 24161, 23692, 23674, 23693, 23696, 23702, 23688, 23704, 23705, 23697, 23706, 23708, 23733, 23714, 23741, 23724, 23723, 23729, 23715, 23745, 23735, 23748, 23762, 23780, 23755, 23781, 23810, 23811, 23847, 23846, 23854, 23844, 23838, 23814, 23835, 23896, 23870, 23860, 23869, 23916, 23899, 23919, 23901, 23915, 23883, 23882, 23913, 23924, 23938, 23961, 23965, 35955, 23991, 24005, 24435, 24439, 24450, 24455, 24457, 24460, 24469, 24473, 24476, 24488, 24493, 24501, 24508, 34914, 24417, 29357, 29360, 29364, 29367, 29368, 29379, 29377, 29390, 29389, 29394, 29416, 29423, 29417, 29426, 29428, 29431, 29441, 29427, 29443, 29434, 37350, 37351, 37352, 37353, 37354, 37355, 37356, 37357, 37358, 37359, 37360, 37361, 37362, 37363, 37364, 37365, 37366, 37367, 37368, 37369, 37370, 37371, 37372, 37373, 37374, 37375, 37376, 37377, 37378, 37379, 37380, 37381, 37382, 37383, 37384, 37385, 37386, 37387, 37388, 37389, 37390, 37391, 37392, 37393, 37394, 37395, 37396, 37397, 37398, 37399, 37400, 37401, 37402, 37403, 37404, 37405, 37406, 37407, 37408, 37409, 37410, 37411, 37412, 37413, 37414, 37415, 37416, 37417, 37418, 37419, 37420, 37421, 37422, 37423, 37424, 37425, 37426, 37427, 37428, 37429, 37430, 37431, 37432, 37433, 37434, 37435, 37436, 37437, 37438, 37439, 37440, 37441, 37442, 37443, 37444, 37445, 29435, 29463, 29459, 29473, 29450, 29470, 29469, 29461, 29474, 29497, 29477, 29484, 29496, 29489, 29520, 29517, 29527, 29536, 29548, 29551, 29566, 33307, 22821, 39143, 22820, 22786, 39267, 39271, 39272, 39273, 39274, 39275, 39276, 39284, 39287, 39293, 39296, 39300, 39303, 39306, 39309, 39312, 39313, 39315, 39316, 39317, 24192, 24209, 24203, 24214, 24229, 24224, 24249, 24245, 24254, 24243, 36179, 24274, 24273, 24283, 24296, 24298, 33210, 24516, 24521, 24534, 24527, 24579, 24558, 24580, 24545, 24548, 24574, 24581, 24582, 24554, 24557, 24568, 24601, 24629, 24614, 24603, 24591, 24589, 24617, 24619, 24586, 24639, 24609, 24696, 24697, 24699, 24698, 24642, 37446, 37447, 37448, 37449, 37450, 37451, 37452, 37453, 37454, 37455, 37456, 37457, 37458, 37459, 37460, 37461, 37462, 37463, 37464, 37465, 37466, 37467, 37468, 37469, 37470, 37471, 37472, 37473, 37474, 37475, 37476, 37477, 37478, 37479, 37480, 37481, 37482, 37483, 37484, 37485, 37486, 37487, 37488, 37489, 37490, 37491, 37493, 37494, 37495, 37496, 37497, 37498, 37499, 37500, 37501, 37502, 37503, 37504, 37505, 37506, 37507, 37508, 37509, 37510, 37511, 37512, 37513, 37514, 37515, 37516, 37517, 37519, 37520, 37521, 37522, 37523, 37524, 37525, 37526, 37527, 37528, 37529, 37530, 37531, 37532, 37533, 37534, 37535, 37536, 37537, 37538, 37539, 37540, 37541, 37542, 37543, 24682, 24701, 24726, 24730, 24749, 24733, 24707, 24722, 24716, 24731, 24812, 24763, 24753, 24797, 24792, 24774, 24794, 24756, 24864, 24870, 24853, 24867, 24820, 24832, 24846, 24875, 24906, 24949, 25004, 24980, 24999, 25015, 25044, 25077, 24541, 38579, 38377, 38379, 38385, 38387, 38389, 38390, 38396, 38398, 38403, 38404, 38406, 38408, 38410, 38411, 38412, 38413, 38415, 38418, 38421, 38422, 38423, 38425, 38426, 20012, 29247, 25109, 27701, 27732, 27740, 27722, 27811, 27781, 27792, 27796, 27788, 27752, 27753, 27764, 27766, 27782, 27817, 27856, 27860, 27821, 27895, 27896, 27889, 27863, 27826, 27872, 27862, 27898, 27883, 27886, 27825, 27859, 27887, 27902, 37544, 37545, 37546, 37547, 37548, 37549, 37551, 37552, 37553, 37554, 37555, 37556, 37557, 37558, 37559, 37560, 37561, 37562, 37563, 37564, 37565, 37566, 37567, 37568, 37569, 37570, 37571, 37572, 37573, 37574, 37575, 37577, 37578, 37579, 37580, 37581, 37582, 37583, 37584, 37585, 37586, 37587, 37588, 37589, 37590, 37591, 37592, 37593, 37594, 37595, 37596, 37597, 37598, 37599, 37600, 37601, 37602, 37603, 37604, 37605, 37606, 37607, 37608, 37609, 37610, 37611, 37612, 37613, 37614, 37615, 37616, 37617, 37618, 37619, 37620, 37621, 37622, 37623, 37624, 37625, 37626, 37627, 37628, 37629, 37630, 37631, 37632, 37633, 37634, 37635, 37636, 37637, 37638, 37639, 37640, 37641, 27961, 27943, 27916, 27971, 27976, 27911, 27908, 27929, 27918, 27947, 27981, 27950, 27957, 27930, 27983, 27986, 27988, 27955, 28049, 28015, 28062, 28064, 27998, 28051, 28052, 27996, 28e3, 28028, 28003, 28186, 28103, 28101, 28126, 28174, 28095, 28128, 28177, 28134, 28125, 28121, 28182, 28075, 28172, 28078, 28203, 28270, 28238, 28267, 28338, 28255, 28294, 28243, 28244, 28210, 28197, 28228, 28383, 28337, 28312, 28384, 28461, 28386, 28325, 28327, 28349, 28347, 28343, 28375, 28340, 28367, 28303, 28354, 28319, 28514, 28486, 28487, 28452, 28437, 28409, 28463, 28470, 28491, 28532, 28458, 28425, 28457, 28553, 28557, 28556, 28536, 28530, 28540, 28538, 28625, 37642, 37643, 37644, 37645, 37646, 37647, 37648, 37649, 37650, 37651, 37652, 37653, 37654, 37655, 37656, 37657, 37658, 37659, 37660, 37661, 37662, 37663, 37664, 37665, 37666, 37667, 37668, 37669, 37670, 37671, 37672, 37673, 37674, 37675, 37676, 37677, 37678, 37679, 37680, 37681, 37682, 37683, 37684, 37685, 37686, 37687, 37688, 37689, 37690, 37691, 37692, 37693, 37695, 37696, 37697, 37698, 37699, 37700, 37701, 37702, 37703, 37704, 37705, 37706, 37707, 37708, 37709, 37710, 37711, 37712, 37713, 37714, 37715, 37716, 37717, 37718, 37719, 37720, 37721, 37722, 37723, 37724, 37725, 37726, 37727, 37728, 37729, 37730, 37731, 37732, 37733, 37734, 37735, 37736, 37737, 37739, 28617, 28583, 28601, 28598, 28610, 28641, 28654, 28638, 28640, 28655, 28698, 28707, 28699, 28729, 28725, 28751, 28766, 23424, 23428, 23445, 23443, 23461, 23480, 29999, 39582, 25652, 23524, 23534, 35120, 23536, 36423, 35591, 36790, 36819, 36821, 36837, 36846, 36836, 36841, 36838, 36851, 36840, 36869, 36868, 36875, 36902, 36881, 36877, 36886, 36897, 36917, 36918, 36909, 36911, 36932, 36945, 36946, 36944, 36968, 36952, 36962, 36955, 26297, 36980, 36989, 36994, 37e3, 36995, 37003, 24400, 24407, 24406, 24408, 23611, 21675, 23632, 23641, 23409, 23651, 23654, 32700, 24362, 24361, 24365, 33396, 24380, 39739, 23662, 22913, 22915, 22925, 22953, 22954, 22947, 37740, 37741, 37742, 37743, 37744, 37745, 37746, 37747, 37748, 37749, 37750, 37751, 37752, 37753, 37754, 37755, 37756, 37757, 37758, 37759, 37760, 37761, 37762, 37763, 37764, 37765, 37766, 37767, 37768, 37769, 37770, 37771, 37772, 37773, 37774, 37776, 37777, 37778, 37779, 37780, 37781, 37782, 37783, 37784, 37785, 37786, 37787, 37788, 37789, 37790, 37791, 37792, 37793, 37794, 37795, 37796, 37797, 37798, 37799, 37800, 37801, 37802, 37803, 37804, 37805, 37806, 37807, 37808, 37809, 37810, 37811, 37812, 37813, 37814, 37815, 37816, 37817, 37818, 37819, 37820, 37821, 37822, 37823, 37824, 37825, 37826, 37827, 37828, 37829, 37830, 37831, 37832, 37833, 37835, 37836, 37837, 22935, 22986, 22955, 22942, 22948, 22994, 22962, 22959, 22999, 22974, 23045, 23046, 23005, 23048, 23011, 23e3, 23033, 23052, 23049, 23090, 23092, 23057, 23075, 23059, 23104, 23143, 23114, 23125, 23100, 23138, 23157, 33004, 23210, 23195, 23159, 23162, 23230, 23275, 23218, 23250, 23252, 23224, 23264, 23267, 23281, 23254, 23270, 23256, 23260, 23305, 23319, 23318, 23346, 23351, 23360, 23573, 23580, 23386, 23397, 23411, 23377, 23379, 23394, 39541, 39543, 39544, 39546, 39551, 39549, 39552, 39553, 39557, 39560, 39562, 39568, 39570, 39571, 39574, 39576, 39579, 39580, 39581, 39583, 39584, 39586, 39587, 39589, 39591, 32415, 32417, 32419, 32421, 32424, 32425, 37838, 37839, 37840, 37841, 37842, 37843, 37844, 37845, 37847, 37848, 37849, 37850, 37851, 37852, 37853, 37854, 37855, 37856, 37857, 37858, 37859, 37860, 37861, 37862, 37863, 37864, 37865, 37866, 37867, 37868, 37869, 37870, 37871, 37872, 37873, 37874, 37875, 37876, 37877, 37878, 37879, 37880, 37881, 37882, 37883, 37884, 37885, 37886, 37887, 37888, 37889, 37890, 37891, 37892, 37893, 37894, 37895, 37896, 37897, 37898, 37899, 37900, 37901, 37902, 37903, 37904, 37905, 37906, 37907, 37908, 37909, 37910, 37911, 37912, 37913, 37914, 37915, 37916, 37917, 37918, 37919, 37920, 37921, 37922, 37923, 37924, 37925, 37926, 37927, 37928, 37929, 37930, 37931, 37932, 37933, 37934, 32429, 32432, 32446, 32448, 32449, 32450, 32457, 32459, 32460, 32464, 32468, 32471, 32475, 32480, 32481, 32488, 32491, 32494, 32495, 32497, 32498, 32525, 32502, 32506, 32507, 32510, 32513, 32514, 32515, 32519, 32520, 32523, 32524, 32527, 32529, 32530, 32535, 32537, 32540, 32539, 32543, 32545, 32546, 32547, 32548, 32549, 32550, 32551, 32554, 32555, 32556, 32557, 32559, 32560, 32561, 32562, 32563, 32565, 24186, 30079, 24027, 30014, 37013, 29582, 29585, 29614, 29602, 29599, 29647, 29634, 29649, 29623, 29619, 29632, 29641, 29640, 29669, 29657, 39036, 29706, 29673, 29671, 29662, 29626, 29682, 29711, 29738, 29787, 29734, 29733, 29736, 29744, 29742, 29740, 37935, 37936, 37937, 37938, 37939, 37940, 37941, 37942, 37943, 37944, 37945, 37946, 37947, 37948, 37949, 37951, 37952, 37953, 37954, 37955, 37956, 37957, 37958, 37959, 37960, 37961, 37962, 37963, 37964, 37965, 37966, 37967, 37968, 37969, 37970, 37971, 37972, 37973, 37974, 37975, 37976, 37977, 37978, 37979, 37980, 37981, 37982, 37983, 37984, 37985, 37986, 37987, 37988, 37989, 37990, 37991, 37992, 37993, 37994, 37996, 37997, 37998, 37999, 38e3, 38001, 38002, 38003, 38004, 38005, 38006, 38007, 38008, 38009, 38010, 38011, 38012, 38013, 38014, 38015, 38016, 38017, 38018, 38019, 38020, 38033, 38038, 38040, 38087, 38095, 38099, 38100, 38106, 38118, 38139, 38172, 38176, 29723, 29722, 29761, 29788, 29783, 29781, 29785, 29815, 29805, 29822, 29852, 29838, 29824, 29825, 29831, 29835, 29854, 29864, 29865, 29840, 29863, 29906, 29882, 38890, 38891, 38892, 26444, 26451, 26462, 26440, 26473, 26533, 26503, 26474, 26483, 26520, 26535, 26485, 26536, 26526, 26541, 26507, 26487, 26492, 26608, 26633, 26584, 26634, 26601, 26544, 26636, 26585, 26549, 26586, 26547, 26589, 26624, 26563, 26552, 26594, 26638, 26561, 26621, 26674, 26675, 26720, 26721, 26702, 26722, 26692, 26724, 26755, 26653, 26709, 26726, 26689, 26727, 26688, 26686, 26698, 26697, 26665, 26805, 26767, 26740, 26743, 26771, 26731, 26818, 26990, 26876, 26911, 26912, 26873, 38183, 38195, 38205, 38211, 38216, 38219, 38229, 38234, 38240, 38254, 38260, 38261, 38263, 38264, 38265, 38266, 38267, 38268, 38269, 38270, 38272, 38273, 38274, 38275, 38276, 38277, 38278, 38279, 38280, 38281, 38282, 38283, 38284, 38285, 38286, 38287, 38288, 38289, 38290, 38291, 38292, 38293, 38294, 38295, 38296, 38297, 38298, 38299, 38300, 38301, 38302, 38303, 38304, 38305, 38306, 38307, 38308, 38309, 38310, 38311, 38312, 38313, 38314, 38315, 38316, 38317, 38318, 38319, 38320, 38321, 38322, 38323, 38324, 38325, 38326, 38327, 38328, 38329, 38330, 38331, 38332, 38333, 38334, 38335, 38336, 38337, 38338, 38339, 38340, 38341, 38342, 38343, 38344, 38345, 38346, 38347, 26916, 26864, 26891, 26881, 26967, 26851, 26896, 26993, 26937, 26976, 26946, 26973, 27012, 26987, 27008, 27032, 27e3, 26932, 27084, 27015, 27016, 27086, 27017, 26982, 26979, 27001, 27035, 27047, 27067, 27051, 27053, 27092, 27057, 27073, 27082, 27103, 27029, 27104, 27021, 27135, 27183, 27117, 27159, 27160, 27237, 27122, 27204, 27198, 27296, 27216, 27227, 27189, 27278, 27257, 27197, 27176, 27224, 27260, 27281, 27280, 27305, 27287, 27307, 29495, 29522, 27521, 27522, 27527, 27524, 27538, 27539, 27533, 27546, 27547, 27553, 27562, 36715, 36717, 36721, 36722, 36723, 36725, 36726, 36728, 36727, 36729, 36730, 36732, 36734, 36737, 36738, 36740, 36743, 36747, 38348, 38349, 38350, 38351, 38352, 38353, 38354, 38355, 38356, 38357, 38358, 38359, 38360, 38361, 38362, 38363, 38364, 38365, 38366, 38367, 38368, 38369, 38370, 38371, 38372, 38373, 38374, 38375, 38380, 38399, 38407, 38419, 38424, 38427, 38430, 38432, 38435, 38436, 38437, 38438, 38439, 38440, 38441, 38443, 38444, 38445, 38447, 38448, 38455, 38456, 38457, 38458, 38462, 38465, 38467, 38474, 38478, 38479, 38481, 38482, 38483, 38486, 38487, 38488, 38489, 38490, 38492, 38493, 38494, 38496, 38499, 38501, 38502, 38507, 38509, 38510, 38511, 38512, 38513, 38515, 38520, 38521, 38522, 38523, 38524, 38525, 38526, 38527, 38528, 38529, 38530, 38531, 38532, 38535, 38537, 38538, 36749, 36750, 36751, 36760, 36762, 36558, 25099, 25111, 25115, 25119, 25122, 25121, 25125, 25124, 25132, 33255, 29935, 29940, 29951, 29967, 29969, 29971, 25908, 26094, 26095, 26096, 26122, 26137, 26482, 26115, 26133, 26112, 28805, 26359, 26141, 26164, 26161, 26166, 26165, 32774, 26207, 26196, 26177, 26191, 26198, 26209, 26199, 26231, 26244, 26252, 26279, 26269, 26302, 26331, 26332, 26342, 26345, 36146, 36147, 36150, 36155, 36157, 36160, 36165, 36166, 36168, 36169, 36167, 36173, 36181, 36185, 35271, 35274, 35275, 35276, 35278, 35279, 35280, 35281, 29294, 29343, 29277, 29286, 29295, 29310, 29311, 29316, 29323, 29325, 29327, 29330, 25352, 25394, 25520, 38540, 38542, 38545, 38546, 38547, 38549, 38550, 38554, 38555, 38557, 38558, 38559, 38560, 38561, 38562, 38563, 38564, 38565, 38566, 38568, 38569, 38570, 38571, 38572, 38573, 38574, 38575, 38577, 38578, 38580, 38581, 38583, 38584, 38586, 38587, 38591, 38594, 38595, 38600, 38602, 38603, 38608, 38609, 38611, 38612, 38614, 38615, 38616, 38617, 38618, 38619, 38620, 38621, 38622, 38623, 38625, 38626, 38627, 38628, 38629, 38630, 38631, 38635, 38636, 38637, 38638, 38640, 38641, 38642, 38644, 38645, 38648, 38650, 38651, 38652, 38653, 38655, 38658, 38659, 38661, 38666, 38667, 38668, 38672, 38673, 38674, 38676, 38677, 38679, 38680, 38681, 38682, 38683, 38685, 38687, 38688, 25663, 25816, 32772, 27626, 27635, 27645, 27637, 27641, 27653, 27655, 27654, 27661, 27669, 27672, 27673, 27674, 27681, 27689, 27684, 27690, 27698, 25909, 25941, 25963, 29261, 29266, 29270, 29232, 34402, 21014, 32927, 32924, 32915, 32956, 26378, 32957, 32945, 32939, 32941, 32948, 32951, 32999, 33e3, 33001, 33002, 32987, 32962, 32964, 32985, 32973, 32983, 26384, 32989, 33003, 33009, 33012, 33005, 33037, 33038, 33010, 33020, 26389, 33042, 35930, 33078, 33054, 33068, 33048, 33074, 33096, 33100, 33107, 33140, 33113, 33114, 33137, 33120, 33129, 33148, 33149, 33133, 33127, 22605, 23221, 33160, 33154, 33169, 28373, 33187, 33194, 33228, 26406, 33226, 33211, 38689, 38690, 38691, 38692, 38693, 38694, 38695, 38696, 38697, 38699, 38700, 38702, 38703, 38705, 38707, 38708, 38709, 38710, 38711, 38714, 38715, 38716, 38717, 38719, 38720, 38721, 38722, 38723, 38724, 38725, 38726, 38727, 38728, 38729, 38730, 38731, 38732, 38733, 38734, 38735, 38736, 38737, 38740, 38741, 38743, 38744, 38746, 38748, 38749, 38751, 38755, 38756, 38758, 38759, 38760, 38762, 38763, 38764, 38765, 38766, 38767, 38768, 38769, 38770, 38773, 38775, 38776, 38777, 38778, 38779, 38781, 38782, 38783, 38784, 38785, 38786, 38787, 38788, 38790, 38791, 38792, 38793, 38794, 38796, 38798, 38799, 38800, 38803, 38805, 38806, 38807, 38809, 38810, 38811, 38812, 38813, 33217, 33190, 27428, 27447, 27449, 27459, 27462, 27481, 39121, 39122, 39123, 39125, 39129, 39130, 27571, 24384, 27586, 35315, 26e3, 40785, 26003, 26044, 26054, 26052, 26051, 26060, 26062, 26066, 26070, 28800, 28828, 28822, 28829, 28859, 28864, 28855, 28843, 28849, 28904, 28874, 28944, 28947, 28950, 28975, 28977, 29043, 29020, 29032, 28997, 29042, 29002, 29048, 29050, 29080, 29107, 29109, 29096, 29088, 29152, 29140, 29159, 29177, 29213, 29224, 28780, 28952, 29030, 29113, 25150, 25149, 25155, 25160, 25161, 31035, 31040, 31046, 31049, 31067, 31068, 31059, 31066, 31074, 31063, 31072, 31087, 31079, 31098, 31109, 31114, 31130, 31143, 31155, 24529, 24528, 38814, 38815, 38817, 38818, 38820, 38821, 38822, 38823, 38824, 38825, 38826, 38828, 38830, 38832, 38833, 38835, 38837, 38838, 38839, 38840, 38841, 38842, 38843, 38844, 38845, 38846, 38847, 38848, 38849, 38850, 38851, 38852, 38853, 38854, 38855, 38856, 38857, 38858, 38859, 38860, 38861, 38862, 38863, 38864, 38865, 38866, 38867, 38868, 38869, 38870, 38871, 38872, 38873, 38874, 38875, 38876, 38877, 38878, 38879, 38880, 38881, 38882, 38883, 38884, 38885, 38888, 38894, 38895, 38896, 38897, 38898, 38900, 38903, 38904, 38905, 38906, 38907, 38908, 38909, 38910, 38911, 38912, 38913, 38914, 38915, 38916, 38917, 38918, 38919, 38920, 38921, 38922, 38923, 38924, 38925, 38926, 24636, 24669, 24666, 24679, 24641, 24665, 24675, 24747, 24838, 24845, 24925, 25001, 24989, 25035, 25041, 25094, 32896, 32895, 27795, 27894, 28156, 30710, 30712, 30720, 30729, 30743, 30744, 30737, 26027, 30765, 30748, 30749, 30777, 30778, 30779, 30751, 30780, 30757, 30764, 30755, 30761, 30798, 30829, 30806, 30807, 30758, 30800, 30791, 30796, 30826, 30875, 30867, 30874, 30855, 30876, 30881, 30883, 30898, 30905, 30885, 30932, 30937, 30921, 30956, 30962, 30981, 30964, 30995, 31012, 31006, 31028, 40859, 40697, 40699, 40700, 30449, 30468, 30477, 30457, 30471, 30472, 30490, 30498, 30489, 30509, 30502, 30517, 30520, 30544, 30545, 30535, 30531, 30554, 30568, 38927, 38928, 38929, 38930, 38931, 38932, 38933, 38934, 38935, 38936, 38937, 38938, 38939, 38940, 38941, 38942, 38943, 38944, 38945, 38946, 38947, 38948, 38949, 38950, 38951, 38952, 38953, 38954, 38955, 38956, 38957, 38958, 38959, 38960, 38961, 38962, 38963, 38964, 38965, 38966, 38967, 38968, 38969, 38970, 38971, 38972, 38973, 38974, 38975, 38976, 38977, 38978, 38979, 38980, 38981, 38982, 38983, 38984, 38985, 38986, 38987, 38988, 38989, 38990, 38991, 38992, 38993, 38994, 38995, 38996, 38997, 38998, 38999, 39e3, 39001, 39002, 39003, 39004, 39005, 39006, 39007, 39008, 39009, 39010, 39011, 39012, 39013, 39014, 39015, 39016, 39017, 39018, 39019, 39020, 39021, 39022, 30562, 30565, 30591, 30605, 30589, 30592, 30604, 30609, 30623, 30624, 30640, 30645, 30653, 30010, 30016, 30030, 30027, 30024, 30043, 30066, 30073, 30083, 32600, 32609, 32607, 35400, 32616, 32628, 32625, 32633, 32641, 32638, 30413, 30437, 34866, 38021, 38022, 38023, 38027, 38026, 38028, 38029, 38031, 38032, 38036, 38039, 38037, 38042, 38043, 38044, 38051, 38052, 38059, 38058, 38061, 38060, 38063, 38064, 38066, 38068, 38070, 38071, 38072, 38073, 38074, 38076, 38077, 38079, 38084, 38088, 38089, 38090, 38091, 38092, 38093, 38094, 38096, 38097, 38098, 38101, 38102, 38103, 38105, 38104, 38107, 38110, 38111, 38112, 38114, 38116, 38117, 38119, 38120, 38122, 39023, 39024, 39025, 39026, 39027, 39028, 39051, 39054, 39058, 39061, 39065, 39075, 39080, 39081, 39082, 39083, 39084, 39085, 39086, 39087, 39088, 39089, 39090, 39091, 39092, 39093, 39094, 39095, 39096, 39097, 39098, 39099, 39100, 39101, 39102, 39103, 39104, 39105, 39106, 39107, 39108, 39109, 39110, 39111, 39112, 39113, 39114, 39115, 39116, 39117, 39119, 39120, 39124, 39126, 39127, 39131, 39132, 39133, 39136, 39137, 39138, 39139, 39140, 39141, 39142, 39145, 39146, 39147, 39148, 39149, 39150, 39151, 39152, 39153, 39154, 39155, 39156, 39157, 39158, 39159, 39160, 39161, 39162, 39163, 39164, 39165, 39166, 39167, 39168, 39169, 39170, 39171, 39172, 39173, 39174, 39175, 38121, 38123, 38126, 38127, 38131, 38132, 38133, 38135, 38137, 38140, 38141, 38143, 38147, 38146, 38150, 38151, 38153, 38154, 38157, 38158, 38159, 38162, 38163, 38164, 38165, 38166, 38168, 38171, 38173, 38174, 38175, 38178, 38186, 38187, 38185, 38188, 38193, 38194, 38196, 38198, 38199, 38200, 38204, 38206, 38207, 38210, 38197, 38212, 38213, 38214, 38217, 38220, 38222, 38223, 38226, 38227, 38228, 38230, 38231, 38232, 38233, 38235, 38238, 38239, 38237, 38241, 38242, 38244, 38245, 38246, 38247, 38248, 38249, 38250, 38251, 38252, 38255, 38257, 38258, 38259, 38202, 30695, 30700, 38601, 31189, 31213, 31203, 31211, 31238, 23879, 31235, 31234, 31262, 31252, 39176, 39177, 39178, 39179, 39180, 39182, 39183, 39185, 39186, 39187, 39188, 39189, 39190, 39191, 39192, 39193, 39194, 39195, 39196, 39197, 39198, 39199, 39200, 39201, 39202, 39203, 39204, 39205, 39206, 39207, 39208, 39209, 39210, 39211, 39212, 39213, 39215, 39216, 39217, 39218, 39219, 39220, 39221, 39222, 39223, 39224, 39225, 39226, 39227, 39228, 39229, 39230, 39231, 39232, 39233, 39234, 39235, 39236, 39237, 39238, 39239, 39240, 39241, 39242, 39243, 39244, 39245, 39246, 39247, 39248, 39249, 39250, 39251, 39254, 39255, 39256, 39257, 39258, 39259, 39260, 39261, 39262, 39263, 39264, 39265, 39266, 39268, 39270, 39283, 39288, 39289, 39291, 39294, 39298, 39299, 39305, 31289, 31287, 31313, 40655, 39333, 31344, 30344, 30350, 30355, 30361, 30372, 29918, 29920, 29996, 40480, 40482, 40488, 40489, 40490, 40491, 40492, 40498, 40497, 40502, 40504, 40503, 40505, 40506, 40510, 40513, 40514, 40516, 40518, 40519, 40520, 40521, 40523, 40524, 40526, 40529, 40533, 40535, 40538, 40539, 40540, 40542, 40547, 40550, 40551, 40552, 40553, 40554, 40555, 40556, 40561, 40557, 40563, 30098, 30100, 30102, 30112, 30109, 30124, 30115, 30131, 30132, 30136, 30148, 30129, 30128, 30147, 30146, 30166, 30157, 30179, 30184, 30182, 30180, 30187, 30183, 30211, 30193, 30204, 30207, 30224, 30208, 30213, 30220, 30231, 30218, 30245, 30232, 30229, 30233, 39308, 39310, 39322, 39323, 39324, 39325, 39326, 39327, 39328, 39329, 39330, 39331, 39332, 39334, 39335, 39337, 39338, 39339, 39340, 39341, 39342, 39343, 39344, 39345, 39346, 39347, 39348, 39349, 39350, 39351, 39352, 39353, 39354, 39355, 39356, 39357, 39358, 39359, 39360, 39361, 39362, 39363, 39364, 39365, 39366, 39367, 39368, 39369, 39370, 39371, 39372, 39373, 39374, 39375, 39376, 39377, 39378, 39379, 39380, 39381, 39382, 39383, 39384, 39385, 39386, 39387, 39388, 39389, 39390, 39391, 39392, 39393, 39394, 39395, 39396, 39397, 39398, 39399, 39400, 39401, 39402, 39403, 39404, 39405, 39406, 39407, 39408, 39409, 39410, 39411, 39412, 39413, 39414, 39415, 39416, 39417, 30235, 30268, 30242, 30240, 30272, 30253, 30256, 30271, 30261, 30275, 30270, 30259, 30285, 30302, 30292, 30300, 30294, 30315, 30319, 32714, 31462, 31352, 31353, 31360, 31366, 31368, 31381, 31398, 31392, 31404, 31400, 31405, 31411, 34916, 34921, 34930, 34941, 34943, 34946, 34978, 35014, 34999, 35004, 35017, 35042, 35022, 35043, 35045, 35057, 35098, 35068, 35048, 35070, 35056, 35105, 35097, 35091, 35099, 35082, 35124, 35115, 35126, 35137, 35174, 35195, 30091, 32997, 30386, 30388, 30684, 32786, 32788, 32790, 32796, 32800, 32802, 32805, 32806, 32807, 32809, 32808, 32817, 32779, 32821, 32835, 32838, 32845, 32850, 32873, 32881, 35203, 39032, 39040, 39043, 39418, 39419, 39420, 39421, 39422, 39423, 39424, 39425, 39426, 39427, 39428, 39429, 39430, 39431, 39432, 39433, 39434, 39435, 39436, 39437, 39438, 39439, 39440, 39441, 39442, 39443, 39444, 39445, 39446, 39447, 39448, 39449, 39450, 39451, 39452, 39453, 39454, 39455, 39456, 39457, 39458, 39459, 39460, 39461, 39462, 39463, 39464, 39465, 39466, 39467, 39468, 39469, 39470, 39471, 39472, 39473, 39474, 39475, 39476, 39477, 39478, 39479, 39480, 39481, 39482, 39483, 39484, 39485, 39486, 39487, 39488, 39489, 39490, 39491, 39492, 39493, 39494, 39495, 39496, 39497, 39498, 39499, 39500, 39501, 39502, 39503, 39504, 39505, 39506, 39507, 39508, 39509, 39510, 39511, 39512, 39513, 39049, 39052, 39053, 39055, 39060, 39066, 39067, 39070, 39071, 39073, 39074, 39077, 39078, 34381, 34388, 34412, 34414, 34431, 34426, 34428, 34427, 34472, 34445, 34443, 34476, 34461, 34471, 34467, 34474, 34451, 34473, 34486, 34500, 34485, 34510, 34480, 34490, 34481, 34479, 34505, 34511, 34484, 34537, 34545, 34546, 34541, 34547, 34512, 34579, 34526, 34548, 34527, 34520, 34513, 34563, 34567, 34552, 34568, 34570, 34573, 34569, 34595, 34619, 34590, 34597, 34606, 34586, 34622, 34632, 34612, 34609, 34601, 34615, 34623, 34690, 34594, 34685, 34686, 34683, 34656, 34672, 34636, 34670, 34699, 34643, 34659, 34684, 34660, 34649, 34661, 34707, 34735, 34728, 34770, 39514, 39515, 39516, 39517, 39518, 39519, 39520, 39521, 39522, 39523, 39524, 39525, 39526, 39527, 39528, 39529, 39530, 39531, 39538, 39555, 39561, 39565, 39566, 39572, 39573, 39577, 39590, 39593, 39594, 39595, 39596, 39597, 39598, 39599, 39602, 39603, 39604, 39605, 39609, 39611, 39613, 39614, 39615, 39619, 39620, 39622, 39623, 39624, 39625, 39626, 39629, 39630, 39631, 39632, 39634, 39636, 39637, 39638, 39639, 39641, 39642, 39643, 39644, 39645, 39646, 39648, 39650, 39651, 39652, 39653, 39655, 39656, 39657, 39658, 39660, 39662, 39664, 39665, 39666, 39667, 39668, 39669, 39670, 39671, 39672, 39674, 39676, 39677, 39678, 39679, 39680, 39681, 39682, 39684, 39685, 39686, 34758, 34696, 34693, 34733, 34711, 34691, 34731, 34789, 34732, 34741, 34739, 34763, 34771, 34749, 34769, 34752, 34762, 34779, 34794, 34784, 34798, 34838, 34835, 34814, 34826, 34843, 34849, 34873, 34876, 32566, 32578, 32580, 32581, 33296, 31482, 31485, 31496, 31491, 31492, 31509, 31498, 31531, 31503, 31559, 31544, 31530, 31513, 31534, 31537, 31520, 31525, 31524, 31539, 31550, 31518, 31576, 31578, 31557, 31605, 31564, 31581, 31584, 31598, 31611, 31586, 31602, 31601, 31632, 31654, 31655, 31672, 31660, 31645, 31656, 31621, 31658, 31644, 31650, 31659, 31668, 31697, 31681, 31692, 31709, 31706, 31717, 31718, 31722, 31756, 31742, 31740, 31759, 31766, 31755, 39687, 39689, 39690, 39691, 39692, 39693, 39694, 39696, 39697, 39698, 39700, 39701, 39702, 39703, 39704, 39705, 39706, 39707, 39708, 39709, 39710, 39712, 39713, 39714, 39716, 39717, 39718, 39719, 39720, 39721, 39722, 39723, 39724, 39725, 39726, 39728, 39729, 39731, 39732, 39733, 39734, 39735, 39736, 39737, 39738, 39741, 39742, 39743, 39744, 39750, 39754, 39755, 39756, 39758, 39760, 39762, 39763, 39765, 39766, 39767, 39768, 39769, 39770, 39771, 39772, 39773, 39774, 39775, 39776, 39777, 39778, 39779, 39780, 39781, 39782, 39783, 39784, 39785, 39786, 39787, 39788, 39789, 39790, 39791, 39792, 39793, 39794, 39795, 39796, 39797, 39798, 39799, 39800, 39801, 39802, 39803, 31775, 31786, 31782, 31800, 31809, 31808, 33278, 33281, 33282, 33284, 33260, 34884, 33313, 33314, 33315, 33325, 33327, 33320, 33323, 33336, 33339, 33331, 33332, 33342, 33348, 33353, 33355, 33359, 33370, 33375, 33384, 34942, 34949, 34952, 35032, 35039, 35166, 32669, 32671, 32679, 32687, 32688, 32690, 31868, 25929, 31889, 31901, 31900, 31902, 31906, 31922, 31932, 31933, 31937, 31943, 31948, 31949, 31944, 31941, 31959, 31976, 33390, 26280, 32703, 32718, 32725, 32741, 32737, 32742, 32745, 32750, 32755, 31992, 32119, 32166, 32174, 32327, 32411, 40632, 40628, 36211, 36228, 36244, 36241, 36273, 36199, 36205, 35911, 35913, 37194, 37200, 37198, 37199, 37220, 39804, 39805, 39806, 39807, 39808, 39809, 39810, 39811, 39812, 39813, 39814, 39815, 39816, 39817, 39818, 39819, 39820, 39821, 39822, 39823, 39824, 39825, 39826, 39827, 39828, 39829, 39830, 39831, 39832, 39833, 39834, 39835, 39836, 39837, 39838, 39839, 39840, 39841, 39842, 39843, 39844, 39845, 39846, 39847, 39848, 39849, 39850, 39851, 39852, 39853, 39854, 39855, 39856, 39857, 39858, 39859, 39860, 39861, 39862, 39863, 39864, 39865, 39866, 39867, 39868, 39869, 39870, 39871, 39872, 39873, 39874, 39875, 39876, 39877, 39878, 39879, 39880, 39881, 39882, 39883, 39884, 39885, 39886, 39887, 39888, 39889, 39890, 39891, 39892, 39893, 39894, 39895, 39896, 39897, 39898, 39899, 37218, 37217, 37232, 37225, 37231, 37245, 37246, 37234, 37236, 37241, 37260, 37253, 37264, 37261, 37265, 37282, 37283, 37290, 37293, 37294, 37295, 37301, 37300, 37306, 35925, 40574, 36280, 36331, 36357, 36441, 36457, 36277, 36287, 36284, 36282, 36292, 36310, 36311, 36314, 36318, 36302, 36303, 36315, 36294, 36332, 36343, 36344, 36323, 36345, 36347, 36324, 36361, 36349, 36372, 36381, 36383, 36396, 36398, 36387, 36399, 36410, 36416, 36409, 36405, 36413, 36401, 36425, 36417, 36418, 36433, 36434, 36426, 36464, 36470, 36476, 36463, 36468, 36485, 36495, 36500, 36496, 36508, 36510, 35960, 35970, 35978, 35973, 35992, 35988, 26011, 35286, 35294, 35290, 35292, 39900, 39901, 39902, 39903, 39904, 39905, 39906, 39907, 39908, 39909, 39910, 39911, 39912, 39913, 39914, 39915, 39916, 39917, 39918, 39919, 39920, 39921, 39922, 39923, 39924, 39925, 39926, 39927, 39928, 39929, 39930, 39931, 39932, 39933, 39934, 39935, 39936, 39937, 39938, 39939, 39940, 39941, 39942, 39943, 39944, 39945, 39946, 39947, 39948, 39949, 39950, 39951, 39952, 39953, 39954, 39955, 39956, 39957, 39958, 39959, 39960, 39961, 39962, 39963, 39964, 39965, 39966, 39967, 39968, 39969, 39970, 39971, 39972, 39973, 39974, 39975, 39976, 39977, 39978, 39979, 39980, 39981, 39982, 39983, 39984, 39985, 39986, 39987, 39988, 39989, 39990, 39991, 39992, 39993, 39994, 39995, 35301, 35307, 35311, 35390, 35622, 38739, 38633, 38643, 38639, 38662, 38657, 38664, 38671, 38670, 38698, 38701, 38704, 38718, 40832, 40835, 40837, 40838, 40839, 40840, 40841, 40842, 40844, 40702, 40715, 40717, 38585, 38588, 38589, 38606, 38610, 30655, 38624, 37518, 37550, 37576, 37694, 37738, 37834, 37775, 37950, 37995, 40063, 40066, 40069, 40070, 40071, 40072, 31267, 40075, 40078, 40080, 40081, 40082, 40084, 40085, 40090, 40091, 40094, 40095, 40096, 40097, 40098, 40099, 40101, 40102, 40103, 40104, 40105, 40107, 40109, 40110, 40112, 40113, 40114, 40115, 40116, 40117, 40118, 40119, 40122, 40123, 40124, 40125, 40132, 40133, 40134, 40135, 40138, 40139, 39996, 39997, 39998, 39999, 4e4, 40001, 40002, 40003, 40004, 40005, 40006, 40007, 40008, 40009, 40010, 40011, 40012, 40013, 40014, 40015, 40016, 40017, 40018, 40019, 40020, 40021, 40022, 40023, 40024, 40025, 40026, 40027, 40028, 40029, 40030, 40031, 40032, 40033, 40034, 40035, 40036, 40037, 40038, 40039, 40040, 40041, 40042, 40043, 40044, 40045, 40046, 40047, 40048, 40049, 40050, 40051, 40052, 40053, 40054, 40055, 40056, 40057, 40058, 40059, 40061, 40062, 40064, 40067, 40068, 40073, 40074, 40076, 40079, 40083, 40086, 40087, 40088, 40089, 40093, 40106, 40108, 40111, 40121, 40126, 40127, 40128, 40129, 40130, 40136, 40137, 40145, 40146, 40154, 40155, 40160, 40161, 40140, 40141, 40142, 40143, 40144, 40147, 40148, 40149, 40151, 40152, 40153, 40156, 40157, 40159, 40162, 38780, 38789, 38801, 38802, 38804, 38831, 38827, 38819, 38834, 38836, 39601, 39600, 39607, 40536, 39606, 39610, 39612, 39617, 39616, 39621, 39618, 39627, 39628, 39633, 39749, 39747, 39751, 39753, 39752, 39757, 39761, 39144, 39181, 39214, 39253, 39252, 39647, 39649, 39654, 39663, 39659, 39675, 39661, 39673, 39688, 39695, 39699, 39711, 39715, 40637, 40638, 32315, 40578, 40583, 40584, 40587, 40594, 37846, 40605, 40607, 40667, 40668, 40669, 40672, 40671, 40674, 40681, 40679, 40677, 40682, 40687, 40738, 40748, 40751, 40761, 40759, 40765, 40766, 40772, 40163, 40164, 40165, 40166, 40167, 40168, 40169, 40170, 40171, 40172, 40173, 40174, 40175, 40176, 40177, 40178, 40179, 40180, 40181, 40182, 40183, 40184, 40185, 40186, 40187, 40188, 40189, 40190, 40191, 40192, 40193, 40194, 40195, 40196, 40197, 40198, 40199, 40200, 40201, 40202, 40203, 40204, 40205, 40206, 40207, 40208, 40209, 40210, 40211, 40212, 40213, 40214, 40215, 40216, 40217, 40218, 40219, 40220, 40221, 40222, 40223, 40224, 40225, 40226, 40227, 40228, 40229, 40230, 40231, 40232, 40233, 40234, 40235, 40236, 40237, 40238, 40239, 40240, 40241, 40242, 40243, 40244, 40245, 40246, 40247, 40248, 40249, 40250, 40251, 40252, 40253, 40254, 40255, 40256, 40257, 40258, 57908, 57909, 57910, 57911, 57912, 57913, 57914, 57915, 57916, 57917, 57918, 57919, 57920, 57921, 57922, 57923, 57924, 57925, 57926, 57927, 57928, 57929, 57930, 57931, 57932, 57933, 57934, 57935, 57936, 57937, 57938, 57939, 57940, 57941, 57942, 57943, 57944, 57945, 57946, 57947, 57948, 57949, 57950, 57951, 57952, 57953, 57954, 57955, 57956, 57957, 57958, 57959, 57960, 57961, 57962, 57963, 57964, 57965, 57966, 57967, 57968, 57969, 57970, 57971, 57972, 57973, 57974, 57975, 57976, 57977, 57978, 57979, 57980, 57981, 57982, 57983, 57984, 57985, 57986, 57987, 57988, 57989, 57990, 57991, 57992, 57993, 57994, 57995, 57996, 57997, 57998, 57999, 58e3, 58001, 40259, 40260, 40261, 40262, 40263, 40264, 40265, 40266, 40267, 40268, 40269, 40270, 40271, 40272, 40273, 40274, 40275, 40276, 40277, 40278, 40279, 40280, 40281, 40282, 40283, 40284, 40285, 40286, 40287, 40288, 40289, 40290, 40291, 40292, 40293, 40294, 40295, 40296, 40297, 40298, 40299, 40300, 40301, 40302, 40303, 40304, 40305, 40306, 40307, 40308, 40309, 40310, 40311, 40312, 40313, 40314, 40315, 40316, 40317, 40318, 40319, 40320, 40321, 40322, 40323, 40324, 40325, 40326, 40327, 40328, 40329, 40330, 40331, 40332, 40333, 40334, 40335, 40336, 40337, 40338, 40339, 40340, 40341, 40342, 40343, 40344, 40345, 40346, 40347, 40348, 40349, 40350, 40351, 40352, 40353, 40354, 58002, 58003, 58004, 58005, 58006, 58007, 58008, 58009, 58010, 58011, 58012, 58013, 58014, 58015, 58016, 58017, 58018, 58019, 58020, 58021, 58022, 58023, 58024, 58025, 58026, 58027, 58028, 58029, 58030, 58031, 58032, 58033, 58034, 58035, 58036, 58037, 58038, 58039, 58040, 58041, 58042, 58043, 58044, 58045, 58046, 58047, 58048, 58049, 58050, 58051, 58052, 58053, 58054, 58055, 58056, 58057, 58058, 58059, 58060, 58061, 58062, 58063, 58064, 58065, 58066, 58067, 58068, 58069, 58070, 58071, 58072, 58073, 58074, 58075, 58076, 58077, 58078, 58079, 58080, 58081, 58082, 58083, 58084, 58085, 58086, 58087, 58088, 58089, 58090, 58091, 58092, 58093, 58094, 58095, 40355, 40356, 40357, 40358, 40359, 40360, 40361, 40362, 40363, 40364, 40365, 40366, 40367, 40368, 40369, 40370, 40371, 40372, 40373, 40374, 40375, 40376, 40377, 40378, 40379, 40380, 40381, 40382, 40383, 40384, 40385, 40386, 40387, 40388, 40389, 40390, 40391, 40392, 40393, 40394, 40395, 40396, 40397, 40398, 40399, 40400, 40401, 40402, 40403, 40404, 40405, 40406, 40407, 40408, 40409, 40410, 40411, 40412, 40413, 40414, 40415, 40416, 40417, 40418, 40419, 40420, 40421, 40422, 40423, 40424, 40425, 40426, 40427, 40428, 40429, 40430, 40431, 40432, 40433, 40434, 40435, 40436, 40437, 40438, 40439, 40440, 40441, 40442, 40443, 40444, 40445, 40446, 40447, 40448, 40449, 40450, 58096, 58097, 58098, 58099, 58100, 58101, 58102, 58103, 58104, 58105, 58106, 58107, 58108, 58109, 58110, 58111, 58112, 58113, 58114, 58115, 58116, 58117, 58118, 58119, 58120, 58121, 58122, 58123, 58124, 58125, 58126, 58127, 58128, 58129, 58130, 58131, 58132, 58133, 58134, 58135, 58136, 58137, 58138, 58139, 58140, 58141, 58142, 58143, 58144, 58145, 58146, 58147, 58148, 58149, 58150, 58151, 58152, 58153, 58154, 58155, 58156, 58157, 58158, 58159, 58160, 58161, 58162, 58163, 58164, 58165, 58166, 58167, 58168, 58169, 58170, 58171, 58172, 58173, 58174, 58175, 58176, 58177, 58178, 58179, 58180, 58181, 58182, 58183, 58184, 58185, 58186, 58187, 58188, 58189, 40451, 40452, 40453, 40454, 40455, 40456, 40457, 40458, 40459, 40460, 40461, 40462, 40463, 40464, 40465, 40466, 40467, 40468, 40469, 40470, 40471, 40472, 40473, 40474, 40475, 40476, 40477, 40478, 40484, 40487, 40494, 40496, 40500, 40507, 40508, 40512, 40525, 40528, 40530, 40531, 40532, 40534, 40537, 40541, 40543, 40544, 40545, 40546, 40549, 40558, 40559, 40562, 40564, 40565, 40566, 40567, 40568, 40569, 40570, 40571, 40572, 40573, 40576, 40577, 40579, 40580, 40581, 40582, 40585, 40586, 40588, 40589, 40590, 40591, 40592, 40593, 40596, 40597, 40598, 40599, 40600, 40601, 40602, 40603, 40604, 40606, 40608, 40609, 40610, 40611, 40612, 40613, 40615, 40616, 40617, 40618, 58190, 58191, 58192, 58193, 58194, 58195, 58196, 58197, 58198, 58199, 58200, 58201, 58202, 58203, 58204, 58205, 58206, 58207, 58208, 58209, 58210, 58211, 58212, 58213, 58214, 58215, 58216, 58217, 58218, 58219, 58220, 58221, 58222, 58223, 58224, 58225, 58226, 58227, 58228, 58229, 58230, 58231, 58232, 58233, 58234, 58235, 58236, 58237, 58238, 58239, 58240, 58241, 58242, 58243, 58244, 58245, 58246, 58247, 58248, 58249, 58250, 58251, 58252, 58253, 58254, 58255, 58256, 58257, 58258, 58259, 58260, 58261, 58262, 58263, 58264, 58265, 58266, 58267, 58268, 58269, 58270, 58271, 58272, 58273, 58274, 58275, 58276, 58277, 58278, 58279, 58280, 58281, 58282, 58283, 40619, 40620, 40621, 40622, 40623, 40624, 40625, 40626, 40627, 40629, 40630, 40631, 40633, 40634, 40636, 40639, 40640, 40641, 40642, 40643, 40645, 40646, 40647, 40648, 40650, 40651, 40652, 40656, 40658, 40659, 40661, 40662, 40663, 40665, 40666, 40670, 40673, 40675, 40676, 40678, 40680, 40683, 40684, 40685, 40686, 40688, 40689, 40690, 40691, 40692, 40693, 40694, 40695, 40696, 40698, 40701, 40703, 40704, 40705, 40706, 40707, 40708, 40709, 40710, 40711, 40712, 40713, 40714, 40716, 40719, 40721, 40722, 40724, 40725, 40726, 40728, 40730, 40731, 40732, 40733, 40734, 40735, 40737, 40739, 40740, 40741, 40742, 40743, 40744, 40745, 40746, 40747, 40749, 40750, 40752, 40753, 58284, 58285, 58286, 58287, 58288, 58289, 58290, 58291, 58292, 58293, 58294, 58295, 58296, 58297, 58298, 58299, 58300, 58301, 58302, 58303, 58304, 58305, 58306, 58307, 58308, 58309, 58310, 58311, 58312, 58313, 58314, 58315, 58316, 58317, 58318, 58319, 58320, 58321, 58322, 58323, 58324, 58325, 58326, 58327, 58328, 58329, 58330, 58331, 58332, 58333, 58334, 58335, 58336, 58337, 58338, 58339, 58340, 58341, 58342, 58343, 58344, 58345, 58346, 58347, 58348, 58349, 58350, 58351, 58352, 58353, 58354, 58355, 58356, 58357, 58358, 58359, 58360, 58361, 58362, 58363, 58364, 58365, 58366, 58367, 58368, 58369, 58370, 58371, 58372, 58373, 58374, 58375, 58376, 58377, 40754, 40755, 40756, 40757, 40758, 40760, 40762, 40764, 40767, 40768, 40769, 40770, 40771, 40773, 40774, 40775, 40776, 40777, 40778, 40779, 40780, 40781, 40782, 40783, 40786, 40787, 40788, 40789, 40790, 40791, 40792, 40793, 40794, 40795, 40796, 40797, 40798, 40799, 40800, 40801, 40802, 40803, 40804, 40805, 40806, 40807, 40808, 40809, 40810, 40811, 40812, 40813, 40814, 40815, 40816, 40817, 40818, 40819, 40820, 40821, 40822, 40823, 40824, 40825, 40826, 40827, 40828, 40829, 40830, 40833, 40834, 40845, 40846, 40847, 40848, 40849, 40850, 40851, 40852, 40853, 40854, 40855, 40856, 40860, 40861, 40862, 40865, 40866, 40867, 40868, 40869, 63788, 63865, 63893, 63975, 63985, 58378, 58379, 58380, 58381, 58382, 58383, 58384, 58385, 58386, 58387, 58388, 58389, 58390, 58391, 58392, 58393, 58394, 58395, 58396, 58397, 58398, 58399, 58400, 58401, 58402, 58403, 58404, 58405, 58406, 58407, 58408, 58409, 58410, 58411, 58412, 58413, 58414, 58415, 58416, 58417, 58418, 58419, 58420, 58421, 58422, 58423, 58424, 58425, 58426, 58427, 58428, 58429, 58430, 58431, 58432, 58433, 58434, 58435, 58436, 58437, 58438, 58439, 58440, 58441, 58442, 58443, 58444, 58445, 58446, 58447, 58448, 58449, 58450, 58451, 58452, 58453, 58454, 58455, 58456, 58457, 58458, 58459, 58460, 58461, 58462, 58463, 58464, 58465, 58466, 58467, 58468, 58469, 58470, 58471, 64012, 64013, 64014, 64015, 64017, 64019, 64020, 64024, 64031, 64032, 64033, 64035, 64036, 64039, 64040, 64041, 11905, 59414, 59415, 59416, 11908, 13427, 13383, 11912, 11915, 59422, 13726, 13850, 13838, 11916, 11927, 14702, 14616, 59430, 14799, 14815, 14963, 14800, 59435, 59436, 15182, 15470, 15584, 11943, 59441, 59442, 11946, 16470, 16735, 11950, 17207, 11955, 11958, 11959, 59451, 17329, 17324, 11963, 17373, 17622, 18017, 17996, 59459, 18211, 18217, 18300, 18317, 11978, 18759, 18810, 18813, 18818, 18819, 18821, 18822, 18847, 18843, 18871, 18870, 59476, 59477, 19619, 19615, 19616, 19617, 19575, 19618, 19731, 19732, 19733, 19734, 19735, 19736, 19737, 19886, 59492, 58472, 58473, 58474, 58475, 58476, 58477, 58478, 58479, 58480, 58481, 58482, 58483, 58484, 58485, 58486, 58487, 58488, 58489, 58490, 58491, 58492, 58493, 58494, 58495, 58496, 58497, 58498, 58499, 58500, 58501, 58502, 58503, 58504, 58505, 58506, 58507, 58508, 58509, 58510, 58511, 58512, 58513, 58514, 58515, 58516, 58517, 58518, 58519, 58520, 58521, 58522, 58523, 58524, 58525, 58526, 58527, 58528, 58529, 58530, 58531, 58532, 58533, 58534, 58535, 58536, 58537, 58538, 58539, 58540, 58541, 58542, 58543, 58544, 58545, 58546, 58547, 58548, 58549, 58550, 58551, 58552, 58553, 58554, 58555, 58556, 58557, 58558, 58559, 58560, 58561, 58562, 58563, 58564, 58565],
"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, 1466, 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]
};
})(exports || {});
}
});
// node_modules/@sinonjs/text-encoding/lib/encoding.js
var require_encoding = __commonJS({
"node_modules/@sinonjs/text-encoding/lib/encoding.js"(exports, module2) {
(function(global2) {
"use strict";
if (typeof module2 !== "undefined" && module2.exports && !global2["encoding-indexes"]) {
global2["encoding-indexes"] = require_encoding_indexes()["encoding-indexes"];
}
function inRange(a3, min, max) {
return min <= a3 && a3 <= max;
}
function includes(array, item) {
return array.indexOf(item) !== -1;
}
var floor = Math.floor;
function ToDictionary(o3) {
if (o3 === void 0)
return {};
if (o3 === Object(o3))
return o3;
throw TypeError("Could not convert argument to dictionary");
}
function stringToCodePoints(string) {
var s4 = String(string);
var n3 = s4.length;
var i4 = 0;
var u3 = [];
while (i4 < n3) {
var c4 = s4.charCodeAt(i4);
if (c4 < 55296 || c4 > 57343) {
u3.push(c4);
} else if (56320 <= c4 && c4 <= 57343) {
u3.push(65533);
} else if (55296 <= c4 && c4 <= 56319) {
if (i4 === n3 - 1) {
u3.push(65533);
} else {
var d3 = s4.charCodeAt(i4 + 1);
if (56320 <= d3 && d3 <= 57343) {
var a3 = c4 & 1023;
var b3 = d3 & 1023;
u3.push(65536 + (a3 << 10) + b3);
i4 += 1;
} else {
u3.push(65533);
}
}
}
i4 += 1;
}
return u3;
}
function codePointsToString(code_points) {
var s4 = "";
for (var i4 = 0; i4 < code_points.length; ++i4) {
var cp = code_points[i4];
if (cp <= 65535) {
s4 += String.fromCharCode(cp);
} else {
cp -= 65536;
s4 += String.fromCharCode(
(cp >> 10) + 55296,
(cp & 1023) + 56320
);
}
}
return s4;
}
function isASCIIByte(a3) {
return 0 <= a3 && a3 <= 127;
}
var isASCIICodePoint = isASCIIByte;
var end_of_stream = -1;
function Stream(tokens) {
this.tokens = [].slice.call(tokens);
this.tokens.reverse();
}
Stream.prototype = {
/**
* @return {boolean} True if end-of-stream has been hit.
*/
endOfStream: function() {
return !this.tokens.length;
},
/**
* When a token is read from a stream, the first token in the
* stream must be returned and subsequently removed, and
* end-of-stream must be returned otherwise.
*
* @return {number} Get the next token from the stream, or
* end_of_stream.
*/
read: function() {
if (!this.tokens.length)
return end_of_stream;
return this.tokens.pop();
},
/**
* When one or more tokens are prepended to a stream, those tokens
* must be inserted, in given order, before the first token in the
* stream.
*
* @param {(number|!Array.<number>)} token The token(s) to prepend to the
* stream.
*/
prepend: function(token) {
if (Array.isArray(token)) {
var tokens = (
/**@type {!Array.<number>}*/
token
);
while (tokens.length)
this.tokens.push(tokens.pop());
} else {
this.tokens.push(token);
}
},
/**
* When one or more tokens are pushed to a stream, those tokens
* must be inserted, in given order, after the last token in the
* stream.
*
* @param {(number|!Array.<number>)} token The tokens(s) to push to the
* stream.
*/
push: function(token) {
if (Array.isArray(token)) {
var tokens = (
/**@type {!Array.<number>}*/
token
);
while (tokens.length)
this.tokens.unshift(tokens.shift());
} else {
this.tokens.unshift(token);
}
}
};
var finished = -1;
function decoderError(fatal, opt_code_point) {
if (fatal)
throw TypeError("Decoder error");
return opt_code_point || 65533;
}
function encoderError(code_point) {
throw TypeError("The code point " + code_point + " could not be encoded.");
}
function Decoder() {
}
Decoder.prototype = {
/**
* @param {Stream} stream The stream of bytes being decoded.
* @param {number} bite The next byte read from the stream.
* @return {?(number|!Array.<number>)} The next code point(s)
* decoded, or null if not enough data exists in the input
* stream to decode a complete code point, or |finished|.
*/
handler: function(stream, bite) {
}
};
function Encoder() {
}
Encoder.prototype = {
/**
* @param {Stream} stream The stream of code points being encoded.
* @param {number} code_point Next code point read from the stream.
* @return {(number|!Array.<number>)} Byte(s) to emit, or |finished|.
*/
handler: function(stream, code_point) {
}
};
function getEncoding(label) {
label = String(label).trim().toLowerCase();
if (Object.prototype.hasOwnProperty.call(label_to_encoding, label)) {
return label_to_encoding[label];
}
return null;
}
var encodings = [
{
"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"
}
];
var label_to_encoding = {};
encodings.forEach(function(category) {
category.encodings.forEach(function(encoding) {
encoding.labels.forEach(function(label) {
label_to_encoding[label] = encoding;
});
});
});
var encoders = {};
var decoders = {};
function indexCodePointFor(pointer, index2) {
if (!index2)
return null;
return index2[pointer] || null;
}
function indexPointerFor(code_point, index2) {
var pointer = index2.indexOf(code_point);
return pointer === -1 ? null : pointer;
}
function index(name) {
if (!("encoding-indexes" in global2)) {
throw Error("Indexes missing. Did you forget to include encoding-indexes.js first?");
}
return global2["encoding-indexes"][name];
}
function indexGB18030RangesCodePointFor(pointer) {
if (pointer > 39419 && pointer < 189e3 || pointer > 1237575)
return null;
if (pointer === 7457)
return 59335;
var offset = 0;
var code_point_offset = 0;
var idx = index("gb18030-ranges");
var i4;
for (i4 = 0; i4 < idx.length; ++i4) {
var entry = idx[i4];
if (entry[0] <= pointer) {
offset = entry[0];
code_point_offset = entry[1];
} else {
break;
}
}
return code_point_offset + pointer - offset;
}
function indexGB18030RangesPointerFor(code_point) {
if (code_point === 59335)
return 7457;
var offset = 0;
var pointer_offset = 0;
var idx = index("gb18030-ranges");
var i4;
for (i4 = 0; i4 < idx.length; ++i4) {
var entry = idx[i4];
if (entry[1] <= code_point) {
offset = entry[1];
pointer_offset = entry[0];
} else {
break;
}
}
return pointer_offset + code_point - offset;
}
function indexShiftJISPointerFor(code_point) {
shift_jis_index = shift_jis_index || index("jis0208").map(function(code_point2, pointer) {
return inRange(pointer, 8272, 8835) ? null : code_point2;
});
var index_ = shift_jis_index;
return index_.indexOf(code_point);
}
var shift_jis_index;
function indexBig5PointerFor(code_point) {
big5_index_no_hkscs = big5_index_no_hkscs || index("big5").map(function(code_point2, pointer) {
return pointer < (161 - 129) * 157 ? null : code_point2;
});
var index_ = big5_index_no_hkscs;
if (code_point === 9552 || code_point === 9566 || code_point === 9569 || code_point === 9578 || code_point === 21313 || code_point === 21317) {
return index_.lastIndexOf(code_point);
}
return indexPointerFor(code_point, index_);
}
var big5_index_no_hkscs;
var DEFAULT_ENCODING = "utf-8";
function TextDecoder3(label, options) {
if (!(this instanceof TextDecoder3))
throw TypeError("Called as a function. Did you forget 'new'?");
label = label !== void 0 ? String(label) : DEFAULT_ENCODING;
options = ToDictionary(options);
this._encoding = null;
this._decoder = null;
this._ignoreBOM = false;
this._BOMseen = false;
this._error_mode = "replacement";
this._do_not_flush = false;
var encoding = getEncoding(label);
if (encoding === null || encoding.name === "replacement")
throw RangeError("Unknown encoding: " + label);
if (!decoders[encoding.name]) {
throw Error("Decoder not present. Did you forget to include encoding-indexes.js first?");
}
var dec = this;
dec._encoding = encoding;
if (Boolean(options["fatal"]))
dec._error_mode = "fatal";
if (Boolean(options["ignoreBOM"]))
dec._ignoreBOM = true;
if (!Object.defineProperty) {
this.encoding = dec._encoding.name.toLowerCase();
this.fatal = dec._error_mode === "fatal";
this.ignoreBOM = dec._ignoreBOM;
}
return dec;
}
if (Object.defineProperty) {
Object.defineProperty(TextDecoder3.prototype, "encoding", {
/** @this {TextDecoder} */
get: function() {
return this._encoding.name.toLowerCase();
}
});
Object.defineProperty(TextDecoder3.prototype, "fatal", {
/** @this {TextDecoder} */
get: function() {
return this._error_mode === "fatal";
}
});
Object.defineProperty(TextDecoder3.prototype, "ignoreBOM", {
/** @this {TextDecoder} */
get: function() {
return this._ignoreBOM;
}
});
}
TextDecoder3.prototype.decode = function decode3(input, options) {
var bytes;
if (typeof input === "object" && input instanceof ArrayBuffer) {
bytes = new Uint8Array(input);
} else if (typeof input === "object" && "buffer" in input && input.buffer instanceof ArrayBuffer) {
bytes = new Uint8Array(
input.buffer,
input.byteOffset,
input.byteLength
);
} else {
bytes = new Uint8Array(0);
}
options = ToDictionary(options);
if (!this._do_not_flush) {
this._decoder = decoders[this._encoding.name]({
fatal: this._error_mode === "fatal"
});
this._BOMseen = false;
}
this._do_not_flush = Boolean(options["stream"]);
var input_stream = new Stream(bytes);
var output = [];
var result;
while (true) {
var token = input_stream.read();
if (token === end_of_stream)
break;
result = this._decoder.handler(input_stream, token);
if (result === finished)
break;
if (result !== null) {
if (Array.isArray(result))
output.push.apply(
output,
/**@type {!Array.<number>}*/
result
);
else
output.push(result);
}
}
if (!this._do_not_flush) {
do {
result = this._decoder.handler(input_stream, input_stream.read());
if (result === finished)
break;
if (result === null)
continue;
if (Array.isArray(result))
output.push.apply(
output,
/**@type {!Array.<number>}*/
result
);
else
output.push(result);
} while (!input_stream.endOfStream());
this._decoder = null;
}
function serializeStream(stream) {
if (includes(["UTF-8", "UTF-16LE", "UTF-16BE"], this._encoding.name) && !this._ignoreBOM && !this._BOMseen) {
if (stream.length > 0 && stream[0] === 65279) {
this._BOMseen = true;
stream.shift();
} else if (stream.length > 0) {
this._BOMseen = true;
} else {
}
}
return codePointsToString(stream);
}
return serializeStream.call(this, output);
};
function TextEncoder3(label, options) {
if (!(this instanceof TextEncoder3))
throw TypeError("Called as a function. Did you forget 'new'?");
options = ToDictionary(options);
this._encoding = null;
this._encoder = null;
this._do_not_flush = false;
this._fatal = Boolean(options["fatal"]) ? "fatal" : "replacement";
var enc = this;
if (Boolean(options["NONSTANDARD_allowLegacyEncoding"])) {
label = label !== void 0 ? String(label) : DEFAULT_ENCODING;
var encoding = getEncoding(label);
if (encoding === null || encoding.name === "replacement")
throw RangeError("Unknown encoding: " + label);
if (!encoders[encoding.name]) {
throw Error("Encoder not present. Did you forget to include encoding-indexes.js first?");
}
enc._encoding = encoding;
} else {
enc._encoding = getEncoding("utf-8");
if (label !== void 0 && "console" in global2) {
console.warn("TextEncoder constructor called with encoding label, which is ignored.");
}
}
if (!Object.defineProperty)
this.encoding = enc._encoding.name.toLowerCase();
return enc;
}
if (Object.defineProperty) {
Object.defineProperty(TextEncoder3.prototype, "encoding", {
/** @this {TextEncoder} */
get: function() {
return this._encoding.name.toLowerCase();
}
});
}
TextEncoder3.prototype.encode = function encode3(opt_string, options) {
opt_string = opt_string === void 0 ? "" : String(opt_string);
options = ToDictionary(options);
if (!this._do_not_flush)
this._encoder = encoders[this._encoding.name]({
fatal: this._fatal === "fatal"
});
this._do_not_flush = Boolean(options["stream"]);
var input = new Stream(stringToCodePoints(opt_string));
var output = [];
var result;
while (true) {
var token = input.read();
if (token === end_of_stream)
break;
result = this._encoder.handler(input, token);
if (result === finished)
break;
if (Array.isArray(result))
output.push.apply(
output,
/**@type {!Array.<number>}*/
result
);
else
output.push(result);
}
if (!this._do_not_flush) {
while (true) {
result = this._encoder.handler(input, input.read());
if (result === finished)
break;
if (Array.isArray(result))
output.push.apply(
output,
/**@type {!Array.<number>}*/
result
);
else
output.push(result);
}
this._encoder = null;
}
return new Uint8Array(output);
};
function UTF8Decoder(options) {
var fatal = options.fatal;
var utf8_code_point = 0, utf8_bytes_seen = 0, utf8_bytes_needed = 0, utf8_lower_boundary = 128, utf8_upper_boundary = 191;
this.handler = function(stream, bite) {
if (bite === end_of_stream && utf8_bytes_needed !== 0) {
utf8_bytes_needed = 0;
return decoderError(fatal);
}
if (bite === end_of_stream)
return finished;
if (utf8_bytes_needed === 0) {
if (inRange(bite, 0, 127)) {
return bite;
} else if (inRange(bite, 194, 223)) {
utf8_bytes_needed = 1;
utf8_code_point = bite & 31;
} else if (inRange(bite, 224, 239)) {
if (bite === 224)
utf8_lower_boundary = 160;
if (bite === 237)
utf8_upper_boundary = 159;
utf8_bytes_needed = 2;
utf8_code_point = bite & 15;
} else if (inRange(bite, 240, 244)) {
if (bite === 240)
utf8_lower_boundary = 144;
if (bite === 244)
utf8_upper_boundary = 143;
utf8_bytes_needed = 3;
utf8_code_point = bite & 7;
} else {
return decoderError(fatal);
}
return null;
}
if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {
utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;
utf8_lower_boundary = 128;
utf8_upper_boundary = 191;
stream.prepend(bite);
return decoderError(fatal);
}
utf8_lower_boundary = 128;
utf8_upper_boundary = 191;
utf8_code_point = utf8_code_point << 6 | bite & 63;
utf8_bytes_seen += 1;
if (utf8_bytes_seen !== utf8_bytes_needed)
return null;
var code_point = utf8_code_point;
utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;
return code_point;
};
}
function UTF8Encoder(options) {
var fatal = options.fatal;
this.handler = function(stream, code_point) {
if (code_point === end_of_stream)
return finished;
if (isASCIICodePoint(code_point))
return code_point;
var count, offset;
if (inRange(code_point, 128, 2047)) {
count = 1;
offset = 192;
} else if (inRange(code_point, 2048, 65535)) {
count = 2;
offset = 224;
} else if (inRange(code_point, 65536, 1114111)) {
count = 3;
offset = 240;
}
var bytes = [(code_point >> 6 * count) + offset];
while (count > 0) {
var temp = code_point >> 6 * (count - 1);
bytes.push(128 | temp & 63);
count -= 1;
}
return bytes;
};
}
encoders["UTF-8"] = function(options) {
return new UTF8Encoder(options);
};
decoders["UTF-8"] = function(options) {
return new UTF8Decoder(options);
};
function SingleByteDecoder(index2, options) {
var fatal = options.fatal;
this.handler = function(stream, bite) {
if (bite === end_of_stream)
return finished;
if (isASCIIByte(bite))
return bite;
var code_point = index2[bite - 128];
if (code_point === null)
return decoderError(fatal);
return code_point;
};
}
function SingleByteEncoder(index2, options) {
var fatal = options.fatal;
this.handler = function(stream, code_point) {
if (code_point === end_of_stream)
return finished;
if (isASCIICodePoint(code_point))
return code_point;
var pointer = indexPointerFor(code_point, index2);
if (pointer === null)
encoderError(code_point);
return pointer + 128;
};
}
(function() {
if (!("encoding-indexes" in global2))
return;
encodings.forEach(function(category) {
if (category.heading !== "Legacy single-byte encodings")
return;
category.encodings.forEach(function(encoding) {
var name = encoding.name;
var idx = index(name.toLowerCase());
decoders[name] = function(options) {
return new SingleByteDecoder(idx, options);
};
encoders[name] = function(options) {
return new SingleByteEncoder(idx, options);
};
});
});
})();
decoders["GBK"] = function(options) {
return new GB18030Decoder(options);
};
encoders["GBK"] = function(options) {
return new GB18030Encoder(options, true);
};
function GB18030Decoder(options) {
var fatal = options.fatal;
var gb18030_first = 0, gb18030_second = 0, gb18030_third = 0;
this.handler = function(stream, bite) {
if (bite === end_of_stream && gb18030_first === 0 && gb18030_second === 0 && gb18030_third === 0) {
return finished;
}
if (bite === end_of_stream && (gb18030_first !== 0 || gb18030_second !== 0 || gb18030_third !== 0)) {
gb18030_first = 0;
gb18030_second = 0;
gb18030_third = 0;
decoderError(fatal);
}
var code_point;
if (gb18030_third !== 0) {
code_point = null;
if (inRange(bite, 48, 57)) {
code_point = indexGB18030RangesCodePointFor(
(((gb18030_first - 129) * 10 + gb18030_second - 48) * 126 + gb18030_third - 129) * 10 + bite - 48
);
}
var buffer = [gb18030_second, gb18030_third, bite];
gb18030_first = 0;
gb18030_second = 0;
gb18030_third = 0;
if (code_point === null) {
stream.prepend(buffer);
return decoderError(fatal);
}
return code_point;
}
if (gb18030_second !== 0) {
if (inRange(bite, 129, 254)) {
gb18030_third = bite;
return null;
}
stream.prepend([gb18030_second, bite]);
gb18030_first = 0;
gb18030_second = 0;
return decoderError(fatal);
}
if (gb18030_first !== 0) {
if (inRange(bite, 48, 57)) {
gb18030_second = bite;
return null;
}
var lead = gb18030_first;
var pointer = null;
gb18030_first = 0;
var offset = bite < 127 ? 64 : 65;
if (inRange(bite, 64, 126) || inRange(bite, 128, 254))
pointer = (lead - 129) * 190 + (bite - offset);
code_point = pointer === null ? null : indexCodePointFor(pointer, index("gb18030"));
if (code_point === null && isASCIIByte(bite))
stream.prepend(bite);
if (code_point === null)
return decoderError(fatal);
return code_point;
}
if (isASCIIByte(bite))
return bite;
if (bite === 128)
return 8364;
if (inRange(bite, 129, 254)) {
gb18030_first = bite;
return null;
}
return decoderError(fatal);
};
}
function GB18030Encoder(options, gbk_flag) {
var fatal = options.fatal;
this.handler = function(stream, code_point) {
if (code_point === end_of_stream)
return finished;
if (isASCIICodePoint(code_point))
return code_point;
if (code_point === 58853)
return encoderError(code_point);
if (gbk_flag && code_point === 8364)
return 128;
var pointer = indexPointerFor(code_point, index("gb18030"));
if (pointer !== null) {
var lead = floor(pointer / 190) + 129;
var trail = pointer % 190;
var offset = trail < 63 ? 64 : 65;
return [lead, trail + offset];
}
if (gbk_flag)
return encoderError(code_point);
pointer = indexGB18030RangesPointerFor(code_point);
var byte1 = floor(pointer / 10 / 126 / 10);
pointer = pointer - byte1 * 10 * 126 * 10;
var byte2 = floor(pointer / 10 / 126);
pointer = pointer - byte2 * 10 * 126;
var byte3 = floor(pointer / 10);
var byte4 = pointer - byte3 * 10;
return [
byte1 + 129,
byte2 + 48,
byte3 + 129,
byte4 + 48
];
};
}
encoders["gb18030"] = function(options) {
return new GB18030Encoder(options);
};
decoders["gb18030"] = function(options) {
return new GB18030Decoder(options);
};
function Big5Decoder(options) {
var fatal = options.fatal;
var Big5_lead = 0;
this.handler = function(stream, bite) {
if (bite === end_of_stream && Big5_lead !== 0) {
Big5_lead = 0;
return decoderError(fatal);
}
if (bite === end_of_stream && Big5_lead === 0)
return finished;
if (Big5_lead !== 0) {
var lead = Big5_lead;
var pointer = null;
Big5_lead = 0;
var offset = bite < 127 ? 64 : 98;
if (inRange(bite, 64, 126) || inRange(bite, 161, 254))
pointer = (lead - 129) * 157 + (bite - offset);
switch (pointer) {
case 1133:
return [202, 772];
case 1135:
return [202, 780];
case 1164:
return [234, 772];
case 1166:
return [234, 780];
}
var code_point = pointer === null ? null : indexCodePointFor(pointer, index("big5"));
if (code_point === null && isASCIIByte(bite))
stream.prepend(bite);
if (code_point === null)
return decoderError(fatal);
return code_point;
}
if (isASCIIByte(bite))
return bite;
if (inRange(bite, 129, 254)) {
Big5_lead = bite;
return null;
}
return decoderError(fatal);
};
}
function Big5Encoder(options) {
var fatal = options.fatal;
this.handler = function(stream, code_point) {
if (code_point === end_of_stream)
return finished;
if (isASCIICodePoint(code_point))
return code_point;
var pointer = indexBig5PointerFor(code_point);
if (pointer === null)
return encoderError(code_point);
var lead = floor(pointer / 157) + 129;
if (lead < 161)
return encoderError(code_point);
var trail = pointer % 157;
var offset = trail < 63 ? 64 : 98;
return [lead, trail + offset];
};
}
encoders["Big5"] = function(options) {
return new Big5Encoder(options);
};
decoders["Big5"] = function(options) {
return new Big5Decoder(options);
};
function EUCJPDecoder(options) {
var fatal = options.fatal;
var eucjp_jis0212_flag = false, eucjp_lead = 0;
this.handler = function(stream, bite) {
if (bite === end_of_stream && eucjp_lead !== 0) {
eucjp_lead = 0;
return decoderError(fatal);
}
if (bite === end_of_stream && eucjp_lead === 0)
return finished;
if (eucjp_lead === 142 && inRange(bite, 161, 223)) {
eucjp_lead = 0;
return 65377 - 161 + bite;
}
if (eucjp_lead === 143 && inRange(bite, 161, 254)) {
eucjp_jis0212_flag = true;
eucjp_lead = bite;
return null;
}
if (eucjp_lead !== 0) {
var lead = eucjp_lead;
eucjp_lead = 0;
var code_point = null;
if (inRange(lead, 161, 254) && inRange(bite, 161, 254)) {
code_point = indexCodePointFor(
(lead - 161) * 94 + (bite - 161),
index(!eucjp_jis0212_flag ? "jis0208" : "jis0212")
);
}
eucjp_jis0212_flag = false;
if (!inRange(bite, 161, 254))
stream.prepend(bite);
if (code_point === null)
return decoderError(fatal);
return code_point;
}
if (isASCIIByte(bite))
return bite;
if (bite === 142 || bite === 143 || inRange(bite, 161, 254)) {
eucjp_lead = bite;
return null;
}
return decoderError(fatal);
};
}
function EUCJPEncoder(options) {
var fatal = options.fatal;
this.handler = function(stream, code_point) {
if (code_point === end_of_stream)
return finished;
if (isASCIICodePoint(code_point))
return code_point;
if (code_point === 165)
return 92;
if (code_point === 8254)
return 126;
if (inRange(code_point, 65377, 65439))
return [142, code_point - 65377 + 161];
if (code_point === 8722)
code_point = 65293;
var pointer = indexPointerFor(code_point, index("jis0208"));
if (pointer === null)
return encoderError(code_point);
var lead = floor(pointer / 94) + 161;
var trail = pointer % 94 + 161;
return [lead, trail];
};
}
encoders["EUC-JP"] = function(options) {
return new EUCJPEncoder(options);
};
decoders["EUC-JP"] = function(options) {
return new EUCJPDecoder(options);
};
function ISO2022JPDecoder(options) {
var fatal = options.fatal;
var states = {
ASCII: 0,
Roman: 1,
Katakana: 2,
LeadByte: 3,
TrailByte: 4,
EscapeStart: 5,
Escape: 6
};
var iso2022jp_decoder_state = states.ASCII, iso2022jp_decoder_output_state = states.ASCII, iso2022jp_lead = 0, iso2022jp_output_flag = false;
this.handler = function(stream, bite) {
switch (iso2022jp_decoder_state) {
default:
case states.ASCII:
if (bite === 27) {
iso2022jp_decoder_state = states.EscapeStart;
return null;
}
if (inRange(bite, 0, 127) && bite !== 14 && bite !== 15 && bite !== 27) {
iso2022jp_output_flag = false;
return bite;
}
if (bite === end_of_stream) {
return finished;
}
iso2022jp_output_flag = false;
return decoderError(fatal);
case states.Roman:
if (bite === 27) {
iso2022jp_decoder_state = states.EscapeStart;
return null;
}
if (bite === 92) {
iso2022jp_output_flag = false;
return 165;
}
if (bite === 126) {
iso2022jp_output_flag = false;
return 8254;
}
if (inRange(bite, 0, 127) && bite !== 14 && bite !== 15 && bite !== 27 && bite !== 92 && bite !== 126) {
iso2022jp_output_flag = false;
return bite;
}
if (bite === end_of_stream) {
return finished;
}
iso2022jp_output_flag = false;
return decoderError(fatal);
case states.Katakana:
if (bite === 27) {
iso2022jp_decoder_state = states.EscapeStart;
return null;
}
if (inRange(bite, 33, 95)) {
iso2022jp_output_flag = false;
return 65377 - 33 + bite;
}
if (bite === end_of_stream) {
return finished;
}
iso2022jp_output_flag = false;
return decoderError(fatal);
case states.LeadByte:
if (bite === 27) {
iso2022jp_decoder_state = states.EscapeStart;
return null;
}
if (inRange(bite, 33, 126)) {
iso2022jp_output_flag = false;
iso2022jp_lead = bite;
iso2022jp_decoder_state = states.TrailByte;
return null;
}
if (bite === end_of_stream) {
return finished;
}
iso2022jp_output_flag = false;
return decoderError(fatal);
case states.TrailByte:
if (bite === 27) {
iso2022jp_decoder_state = states.EscapeStart;
return decoderError(fatal);
}
if (inRange(bite, 33, 126)) {
iso2022jp_decoder_state = states.LeadByte;
var pointer = (iso2022jp_lead - 33) * 94 + bite - 33;
var code_point = indexCodePointFor(pointer, index("jis0208"));
if (code_point === null)
return decoderError(fatal);
return code_point;
}
if (bite === end_of_stream) {
iso2022jp_decoder_state = states.LeadByte;
stream.prepend(bite);
return decoderError(fatal);
}
iso2022jp_decoder_state = states.LeadByte;
return decoderError(fatal);
case states.EscapeStart:
if (bite === 36 || bite === 40) {
iso2022jp_lead = bite;
iso2022jp_decoder_state = states.Escape;
return null;
}
stream.prepend(bite);
iso2022jp_output_flag = false;
iso2022jp_decoder_state = iso2022jp_decoder_output_state;
return decoderError(fatal);
case states.Escape:
var lead = iso2022jp_lead;
iso2022jp_lead = 0;
var state = null;
if (lead === 40 && bite === 66)
state = states.ASCII;
if (lead === 40 && bite === 74)
state = states.Roman;
if (lead === 40 && bite === 73)
state = states.Katakana;
if (lead === 36 && (bite === 64 || bite === 66))
state = states.LeadByte;
if (state !== null) {
iso2022jp_decoder_state = iso2022jp_decoder_state = state;
var output_flag = iso2022jp_output_flag;
iso2022jp_output_flag = true;
return !output_flag ? null : decoderError(fatal);
}
stream.prepend([lead, bite]);
iso2022jp_output_flag = false;
iso2022jp_decoder_state = iso2022jp_decoder_output_state;
return decoderError(fatal);
}
};
}
function ISO2022JPEncoder(options) {
var fatal = options.fatal;
var states = {
ASCII: 0,
Roman: 1,
jis0208: 2
};
var iso2022jp_state = states.ASCII;
this.handler = function(stream, code_point) {
if (code_point === end_of_stream && iso2022jp_state !== states.ASCII) {
stream.prepend(code_point);
iso2022jp_state = states.ASCII;
return [27, 40, 66];
}
if (code_point === end_of_stream && iso2022jp_state === states.ASCII)
return finished;
if ((iso2022jp_state === states.ASCII || iso2022jp_state === states.Roman) && (code_point === 14 || code_point === 15 || code_point === 27)) {
return encoderError(65533);
}
if (iso2022jp_state === states.ASCII && isASCIICodePoint(code_point))
return code_point;
if (iso2022jp_state === states.Roman && (isASCIICodePoint(code_point) && code_point !== 92 && code_point !== 126 || (code_point == 165 || code_point == 8254))) {
if (isASCIICodePoint(code_point))
return code_point;
if (code_point === 165)
return 92;
if (code_point === 8254)
return 126;
}
if (isASCIICodePoint(code_point) && iso2022jp_state !== states.ASCII) {
stream.prepend(code_point);
iso2022jp_state = states.ASCII;
return [27, 40, 66];
}
if ((code_point === 165 || code_point === 8254) && iso2022jp_state !== states.Roman) {
stream.prepend(code_point);
iso2022jp_state = states.Roman;
return [27, 40, 74];
}
if (code_point === 8722)
code_point = 65293;
var pointer = indexPointerFor(code_point, index("jis0208"));
if (pointer === null)
return encoderError(code_point);
if (iso2022jp_state !== states.jis0208) {
stream.prepend(code_point);
iso2022jp_state = states.jis0208;
return [27, 36, 66];
}
var lead = floor(pointer / 94) + 33;
var trail = pointer % 94 + 33;
return [lead, trail];
};
}
encoders["ISO-2022-JP"] = function(options) {
return new ISO2022JPEncoder(options);
};
decoders["ISO-2022-JP"] = function(options) {
return new ISO2022JPDecoder(options);
};
function ShiftJISDecoder(options) {
var fatal = options.fatal;
var Shift_JIS_lead = 0;
this.handler = function(stream, bite) {
if (bite === end_of_stream && Shift_JIS_lead !== 0) {
Shift_JIS_lead = 0;
return decoderError(fatal);
}
if (bite === end_of_stream && Shift_JIS_lead === 0)
return finished;
if (Shift_JIS_lead !== 0) {
var lead = Shift_JIS_lead;
var pointer = null;
Shift_JIS_lead = 0;
var offset = bite < 127 ? 64 : 65;
var lead_offset = lead < 160 ? 129 : 193;
if (inRange(bite, 64, 126) || inRange(bite, 128, 252))
pointer = (lead - lead_offset) * 188 + bite - offset;
if (inRange(pointer, 8836, 10715))
return 57344 - 8836 + pointer;
var code_point = pointer === null ? null : indexCodePointFor(pointer, index("jis0208"));
if (code_point === null && isASCIIByte(bite))
stream.prepend(bite);
if (code_point === null)
return decoderError(fatal);
return code_point;
}
if (isASCIIByte(bite) || bite === 128)
return bite;
if (inRange(bite, 161, 223))
return 65377 - 161 + bite;
if (inRange(bite, 129, 159) || inRange(bite, 224, 252)) {
Shift_JIS_lead = bite;
return null;
}
return decoderError(fatal);
};
}
function ShiftJISEncoder(options) {
var fatal = options.fatal;
this.handler = function(stream, code_point) {
if (code_point === end_of_stream)
return finished;
if (isASCIICodePoint(code_point) || code_point === 128)
return code_point;
if (code_point === 165)
return 92;
if (code_point === 8254)
return 126;
if (inRange(code_point, 65377, 65439))
return code_point - 65377 + 161;
if (code_point === 8722)
code_point = 65293;
var pointer = indexShiftJISPointerFor(code_point);
if (pointer === null)
return encoderError(code_point);
var lead = floor(pointer / 188);
var lead_offset = lead < 31 ? 129 : 193;
var trail = pointer % 188;
var offset = trail < 63 ? 64 : 65;
return [lead + lead_offset, trail + offset];
};
}
encoders["Shift_JIS"] = function(options) {
return new ShiftJISEncoder(options);
};
decoders["Shift_JIS"] = function(options) {
return new ShiftJISDecoder(options);
};
function EUCKRDecoder(options) {
var fatal = options.fatal;
var euckr_lead = 0;
this.handler = function(stream, bite) {
if (bite === end_of_stream && euckr_lead !== 0) {
euckr_lead = 0;
return decoderError(fatal);
}
if (bite === end_of_stream && euckr_lead === 0)
return finished;
if (euckr_lead !== 0) {
var lead = euckr_lead;
var pointer = null;
euckr_lead = 0;
if (inRange(bite, 65, 254))
pointer = (lead - 129) * 190 + (bite - 65);
var code_point = pointer === null ? null : indexCodePointFor(pointer, index("euc-kr"));
if (pointer === null && isASCIIByte(bite))
stream.prepend(bite);
if (code_point === null)
return decoderError(fatal);
return code_point;
}
if (isASCIIByte(bite))
return bite;
if (inRange(bite, 129, 254)) {
euckr_lead = bite;
return null;
}
return decoderError(fatal);
};
}
function EUCKREncoder(options) {
var fatal = options.fatal;
this.handler = function(stream, code_point) {
if (code_point === end_of_stream)
return finished;
if (isASCIICodePoint(code_point))
return code_point;
var pointer = indexPointerFor(code_point, index("euc-kr"));
if (pointer === null)
return encoderError(code_point);
var lead = floor(pointer / 190) + 129;
var trail = pointer % 190 + 65;
return [lead, trail];
};
}
encoders["EUC-KR"] = function(options) {
return new EUCKREncoder(options);
};
decoders["EUC-KR"] = function(options) {
return new EUCKRDecoder(options);
};
function convertCodeUnitToBytes(code_unit, utf16be) {
var byte1 = code_unit >> 8;
var byte2 = code_unit & 255;
if (utf16be)
return [byte1, byte2];
return [byte2, byte1];
}
function UTF16Decoder(utf16_be, options) {
var fatal = options.fatal;
var utf16_lead_byte = null, utf16_lead_surrogate = null;
this.handler = function(stream, bite) {
if (bite === end_of_stream && (utf16_lead_byte !== null || utf16_lead_surrogate !== null)) {
return decoderError(fatal);
}
if (bite === end_of_stream && utf16_lead_byte === null && utf16_lead_surrogate === null) {
return finished;
}
if (utf16_lead_byte === null) {
utf16_lead_byte = bite;
return null;
}
var code_unit;
if (utf16_be) {
code_unit = (utf16_lead_byte << 8) + bite;
} else {
code_unit = (bite << 8) + utf16_lead_byte;
}
utf16_lead_byte = null;
if (utf16_lead_surrogate !== null) {
var lead_surrogate = utf16_lead_surrogate;
utf16_lead_surrogate = null;
if (inRange(code_unit, 56320, 57343)) {
return 65536 + (lead_surrogate - 55296) * 1024 + (code_unit - 56320);
}
stream.prepend(convertCodeUnitToBytes(code_unit, utf16_be));
return decoderError(fatal);
}
if (inRange(code_unit, 55296, 56319)) {
utf16_lead_surrogate = code_unit;
return null;
}
if (inRange(code_unit, 56320, 57343))
return decoderError(fatal);
return code_unit;
};
}
function UTF16Encoder(utf16_be, options) {
var fatal = options.fatal;
this.handler = function(stream, code_point) {
if (code_point === end_of_stream)
return finished;
if (inRange(code_point, 0, 65535))
return convertCodeUnitToBytes(code_point, utf16_be);
var lead = convertCodeUnitToBytes(
(code_point - 65536 >> 10) + 55296,
utf16_be
);
var trail = convertCodeUnitToBytes(
(code_point - 65536 & 1023) + 56320,
utf16_be
);
return lead.concat(trail);
};
}
encoders["UTF-16BE"] = function(options) {
return new UTF16Encoder(true, options);
};
decoders["UTF-16BE"] = function(options) {
return new UTF16Decoder(true, options);
};
encoders["UTF-16LE"] = function(options) {
return new UTF16Encoder(false, options);
};
decoders["UTF-16LE"] = function(options) {
return new UTF16Decoder(false, options);
};
function XUserDefinedDecoder(options) {
var fatal = options.fatal;
this.handler = function(stream, bite) {
if (bite === end_of_stream)
return finished;
if (isASCIIByte(bite))
return bite;
return 63360 + bite - 128;
};
}
function XUserDefinedEncoder(options) {
var fatal = options.fatal;
this.handler = function(stream, code_point) {
if (code_point === end_of_stream)
return finished;
if (isASCIICodePoint(code_point))
return code_point;
if (inRange(code_point, 63360, 63487))
return code_point - 63360 + 128;
return encoderError(code_point);
};
}
encoders["x-user-defined"] = function(options) {
return new XUserDefinedEncoder(options);
};
decoders["x-user-defined"] = function(options) {
return new XUserDefinedDecoder(options);
};
if (!global2["TextEncoder"])
global2["TextEncoder"] = TextEncoder3;
if (!global2["TextDecoder"])
global2["TextDecoder"] = TextDecoder3;
if (typeof module2 !== "undefined" && module2.exports) {
module2.exports = {
TextEncoder: global2["TextEncoder"],
TextDecoder: global2["TextDecoder"],
EncodingIndexes: global2["encoding-indexes"]
};
}
})(exports || {});
}
});
// node_modules/@sinonjs/text-encoding/index.js
var require_text_encoding = __commonJS({
"node_modules/@sinonjs/text-encoding/index.js"(exports, module2) {
var encoding = require_encoding();
module2.exports = {
TextEncoder: encoding.TextEncoder,
TextDecoder: encoding.TextDecoder
};
}
});
// node_modules/dayjs/dayjs.min.js
var require_dayjs_min = __commonJS({
"node_modules/dayjs/dayjs.min.js"(exports, module2) {
!function(t3, e3) {
"object" == typeof exports && "undefined" != typeof module2 ? module2.exports = e3() : "function" == typeof define && define.amd ? define(e3) : (t3 = "undefined" != typeof globalThis ? globalThis : t3 || self).dayjs = e3();
}(exports, function() {
"use strict";
var t3 = 1e3, e3 = 6e4, n3 = 36e5, r3 = "millisecond", i4 = "second", s4 = "minute", u3 = "hour", a3 = "day", o3 = "week", f3 = "month", h3 = "quarter", c4 = "year", d3 = "date", l3 = "Invalid Date", $3 = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y3 = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M3 = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), ordinal: function(t4) {
var e4 = ["th", "st", "nd", "rd"], n4 = t4 % 100;
return "[" + t4 + (e4[(n4 - 20) % 10] || e4[n4] || e4[0]) + "]";
} }, m3 = function(t4, e4, n4) {
var r4 = String(t4);
return !r4 || r4.length >= e4 ? t4 : "" + Array(e4 + 1 - r4.length).join(n4) + t4;
}, v3 = { s: m3, z: function(t4) {
var e4 = -t4.utcOffset(), n4 = Math.abs(e4), r4 = Math.floor(n4 / 60), i5 = n4 % 60;
return (e4 <= 0 ? "+" : "-") + m3(r4, 2, "0") + ":" + m3(i5, 2, "0");
}, m: function t4(e4, n4) {
if (e4.date() < n4.date())
return -t4(n4, e4);
var r4 = 12 * (n4.year() - e4.year()) + (n4.month() - e4.month()), i5 = e4.clone().add(r4, f3), s5 = n4 - i5 < 0, u4 = e4.clone().add(r4 + (s5 ? -1 : 1), f3);
return +(-(r4 + (n4 - i5) / (s5 ? i5 - u4 : u4 - i5)) || 0);
}, a: function(t4) {
return t4 < 0 ? Math.ceil(t4) || 0 : Math.floor(t4);
}, p: function(t4) {
return { M: f3, y: c4, w: o3, d: a3, D: d3, h: u3, m: s4, s: i4, ms: r3, Q: h3 }[t4] || String(t4 || "").toLowerCase().replace(/s$/, "");
}, u: function(t4) {
return void 0 === t4;
} }, g4 = "en", D3 = {};
D3[g4] = M3;
var p3 = function(t4) {
return t4 instanceof _3;
}, S2 = function t4(e4, n4, r4) {
var i5;
if (!e4)
return g4;
if ("string" == typeof e4) {
var s5 = e4.toLowerCase();
D3[s5] && (i5 = s5), n4 && (D3[s5] = n4, i5 = s5);
var u4 = e4.split("-");
if (!i5 && u4.length > 1)
return t4(u4[0]);
} else {
var a4 = e4.name;
D3[a4] = e4, i5 = a4;
}
return !r4 && i5 && (g4 = i5), i5 || !r4 && g4;
}, w4 = function(t4, e4) {
if (p3(t4))
return t4.clone();
var n4 = "object" == typeof e4 ? e4 : {};
return n4.date = t4, n4.args = arguments, new _3(n4);
}, O3 = v3;
O3.l = S2, O3.i = p3, O3.w = function(t4, e4) {
return w4(t4, { locale: e4.$L, utc: e4.$u, x: e4.$x, $offset: e4.$offset });
};
var _3 = function() {
function M4(t4) {
this.$L = S2(t4.locale, null, true), this.parse(t4);
}
var m4 = M4.prototype;
return m4.parse = function(t4) {
this.$d = function(t5) {
var e4 = t5.date, n4 = t5.utc;
if (null === e4)
return new Date(NaN);
if (O3.u(e4))
return new Date();
if (e4 instanceof Date)
return new Date(e4);
if ("string" == typeof e4 && !/Z$/i.test(e4)) {
var r4 = e4.match($3);
if (r4) {
var i5 = r4[2] - 1 || 0, s5 = (r4[7] || "0").substring(0, 3);
return n4 ? new Date(Date.UTC(r4[1], i5, r4[3] || 1, r4[4] || 0, r4[5] || 0, r4[6] || 0, s5)) : new Date(r4[1], i5, r4[3] || 1, r4[4] || 0, r4[5] || 0, r4[6] || 0, s5);
}
}
return new Date(e4);
}(t4), this.$x = t4.x || {}, this.init();
}, m4.init = function() {
var t4 = this.$d;
this.$y = t4.getFullYear(), this.$M = t4.getMonth(), this.$D = t4.getDate(), this.$W = t4.getDay(), this.$H = t4.getHours(), this.$m = t4.getMinutes(), this.$s = t4.getSeconds(), this.$ms = t4.getMilliseconds();
}, m4.$utils = function() {
return O3;
}, m4.isValid = function() {
return !(this.$d.toString() === l3);
}, m4.isSame = function(t4, e4) {
var n4 = w4(t4);
return this.startOf(e4) <= n4 && n4 <= this.endOf(e4);
}, m4.isAfter = function(t4, e4) {
return w4(t4) < this.startOf(e4);
}, m4.isBefore = function(t4, e4) {
return this.endOf(e4) < w4(t4);
}, m4.$g = function(t4, e4, n4) {
return O3.u(t4) ? this[e4] : this.set(n4, t4);
}, m4.unix = function() {
return Math.floor(this.valueOf() / 1e3);
}, m4.valueOf = function() {
return this.$d.getTime();
}, m4.startOf = function(t4, e4) {
var n4 = this, r4 = !!O3.u(e4) || e4, h4 = O3.p(t4), l4 = function(t5, e5) {
var i5 = O3.w(n4.$u ? Date.UTC(n4.$y, e5, t5) : new Date(n4.$y, e5, t5), n4);
return r4 ? i5 : i5.endOf(a3);
}, $4 = function(t5, e5) {
return O3.w(n4.toDate()[t5].apply(n4.toDate("s"), (r4 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e5)), n4);
}, y4 = this.$W, M5 = this.$M, m5 = this.$D, v4 = "set" + (this.$u ? "UTC" : "");
switch (h4) {
case c4:
return r4 ? l4(1, 0) : l4(31, 11);
case f3:
return r4 ? l4(1, M5) : l4(0, M5 + 1);
case o3:
var g5 = this.$locale().weekStart || 0, D4 = (y4 < g5 ? y4 + 7 : y4) - g5;
return l4(r4 ? m5 - D4 : m5 + (6 - D4), M5);
case a3:
case d3:
return $4(v4 + "Hours", 0);
case u3:
return $4(v4 + "Minutes", 1);
case s4:
return $4(v4 + "Seconds", 2);
case i4:
return $4(v4 + "Milliseconds", 3);
default:
return this.clone();
}
}, m4.endOf = function(t4) {
return this.startOf(t4, false);
}, m4.$set = function(t4, e4) {
var n4, o4 = O3.p(t4), h4 = "set" + (this.$u ? "UTC" : ""), l4 = (n4 = {}, n4[a3] = h4 + "Date", n4[d3] = h4 + "Date", n4[f3] = h4 + "Month", n4[c4] = h4 + "FullYear", n4[u3] = h4 + "Hours", n4[s4] = h4 + "Minutes", n4[i4] = h4 + "Seconds", n4[r3] = h4 + "Milliseconds", n4)[o4], $4 = o4 === a3 ? this.$D + (e4 - this.$W) : e4;
if (o4 === f3 || o4 === c4) {
var y4 = this.clone().set(d3, 1);
y4.$d[l4]($4), y4.init(), this.$d = y4.set(d3, Math.min(this.$D, y4.daysInMonth())).$d;
} else
l4 && this.$d[l4]($4);
return this.init(), this;
}, m4.set = function(t4, e4) {
return this.clone().$set(t4, e4);
}, m4.get = function(t4) {
return this[O3.p(t4)]();
}, m4.add = function(r4, h4) {
var d4, l4 = this;
r4 = Number(r4);
var $4 = O3.p(h4), y4 = function(t4) {
var e4 = w4(l4);
return O3.w(e4.date(e4.date() + Math.round(t4 * r4)), l4);
};
if ($4 === f3)
return this.set(f3, this.$M + r4);
if ($4 === c4)
return this.set(c4, this.$y + r4);
if ($4 === a3)
return y4(1);
if ($4 === o3)
return y4(7);
var M5 = (d4 = {}, d4[s4] = e3, d4[u3] = n3, d4[i4] = t3, d4)[$4] || 1, m5 = this.$d.getTime() + r4 * M5;
return O3.w(m5, this);
}, m4.subtract = function(t4, e4) {
return this.add(-1 * t4, e4);
}, m4.format = function(t4) {
var e4 = this, n4 = this.$locale();
if (!this.isValid())
return n4.invalidDate || l3;
var r4 = t4 || "YYYY-MM-DDTHH:mm:ssZ", i5 = O3.z(this), s5 = this.$H, u4 = this.$m, a4 = this.$M, o4 = n4.weekdays, f4 = n4.months, h4 = function(t5, n5, i6, s6) {
return t5 && (t5[n5] || t5(e4, r4)) || i6[n5].slice(0, s6);
}, c5 = function(t5) {
return O3.s(s5 % 12 || 12, t5, "0");
}, d4 = n4.meridiem || function(t5, e5, n5) {
var r5 = t5 < 12 ? "AM" : "PM";
return n5 ? r5.toLowerCase() : r5;
}, $4 = { YY: String(this.$y).slice(-2), YYYY: this.$y, M: a4 + 1, MM: O3.s(a4 + 1, 2, "0"), MMM: h4(n4.monthsShort, a4, f4, 3), MMMM: h4(f4, a4), D: this.$D, DD: O3.s(this.$D, 2, "0"), d: String(this.$W), dd: h4(n4.weekdaysMin, this.$W, o4, 2), ddd: h4(n4.weekdaysShort, this.$W, o4, 3), dddd: o4[this.$W], H: String(s5), HH: O3.s(s5, 2, "0"), h: c5(1), hh: c5(2), a: d4(s5, u4, true), A: d4(s5, u4, false), m: String(u4), mm: O3.s(u4, 2, "0"), s: String(this.$s), ss: O3.s(this.$s, 2, "0"), SSS: O3.s(this.$ms, 3, "0"), Z: i5 };
return r4.replace(y3, function(t5, e5) {
return e5 || $4[t5] || i5.replace(":", "");
});
}, m4.utcOffset = function() {
return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
}, m4.diff = function(r4, d4, l4) {
var $4, y4 = O3.p(d4), M5 = w4(r4), m5 = (M5.utcOffset() - this.utcOffset()) * e3, v4 = this - M5, g5 = O3.m(this, M5);
return g5 = ($4 = {}, $4[c4] = g5 / 12, $4[f3] = g5, $4[h3] = g5 / 3, $4[o3] = (v4 - m5) / 6048e5, $4[a3] = (v4 - m5) / 864e5, $4[u3] = v4 / n3, $4[s4] = v4 / e3, $4[i4] = v4 / t3, $4)[y4] || v4, l4 ? g5 : O3.a(g5);
}, m4.daysInMonth = function() {
return this.endOf(f3).$D;
}, m4.$locale = function() {
return D3[this.$L];
}, m4.locale = function(t4, e4) {
if (!t4)
return this.$L;
var n4 = this.clone(), r4 = S2(t4, e4, true);
return r4 && (n4.$L = r4), n4;
}, m4.clone = function() {
return O3.w(this.$d, this);
}, m4.toDate = function() {
return new Date(this.valueOf());
}, m4.toJSON = function() {
return this.isValid() ? this.toISOString() : null;
}, m4.toISOString = function() {
return this.$d.toISOString();
}, m4.toString = function() {
return this.$d.toUTCString();
}, M4;
}(), T4 = _3.prototype;
return w4.prototype = T4, [["$ms", r3], ["$s", i4], ["$m", s4], ["$H", u3], ["$W", a3], ["$M", f3], ["$y", c4], ["$D", d3]].forEach(function(t4) {
T4[t4[1]] = function(e4) {
return this.$g(e4, t4[0], t4[1]);
};
}), w4.extend = function(t4, e4) {
return t4.$i || (t4(e4, _3, w4), t4.$i = true), w4;
}, w4.locale = S2, w4.isDayjs = p3, w4.unix = function(t4) {
return w4(1e3 * t4);
}, w4.en = D3[g4], w4.Ls = D3, w4.p = {}, w4;
});
}
});
// src/main.ts
var main_exports = {};
__export(main_exports, {
default: () => MsgHandlerPlugin
});
module.exports = __toCommonJS(main_exports);
var import_obsidian6 = require("obsidian");
// src/view.tsx
var import_obsidian4 = require("obsidian");
// node_modules/preact/dist/preact.module.js
var n2;
var l;
var u;
var i2;
var t;
var r;
var o;
var f;
var e = {};
var c2 = [];
var s2 = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;
function a(n3, l3) {
for (var u3 in l3)
n3[u3] = l3[u3];
return n3;
}
function h(n3) {
var l3 = n3.parentNode;
l3 && l3.removeChild(n3);
}
function v(l3, u3, i4) {
var t3, r3, o3, f3 = {};
for (o3 in u3)
"key" == o3 ? t3 = u3[o3] : "ref" == o3 ? r3 = u3[o3] : f3[o3] = u3[o3];
if (arguments.length > 2 && (f3.children = arguments.length > 3 ? n2.call(arguments, 2) : i4), "function" == typeof l3 && null != l3.defaultProps)
for (o3 in l3.defaultProps)
void 0 === f3[o3] && (f3[o3] = l3.defaultProps[o3]);
return y(l3, f3, t3, r3, null);
}
function y(n3, i4, t3, r3, o3) {
var f3 = { type: n3, props: i4, key: t3, ref: r3, __k: null, __: null, __b: 0, __e: null, __d: void 0, __c: null, __h: null, constructor: void 0, __v: null == o3 ? ++u : o3 };
return null == o3 && null != l.vnode && l.vnode(f3), f3;
}
function p() {
return { current: null };
}
function d(n3) {
return n3.children;
}
function _(n3, l3) {
this.props = n3, this.context = l3;
}
function k(n3, l3) {
if (null == l3)
return n3.__ ? k(n3.__, n3.__.__k.indexOf(n3) + 1) : null;
for (var u3; l3 < n3.__k.length; l3++)
if (null != (u3 = n3.__k[l3]) && null != u3.__e)
return u3.__e;
return "function" == typeof n3.type ? k(n3) : null;
}
function b(n3) {
var l3, u3;
if (null != (n3 = n3.__) && null != n3.__c) {
for (n3.__e = n3.__c.base = null, l3 = 0; l3 < n3.__k.length; l3++)
if (null != (u3 = n3.__k[l3]) && null != u3.__e) {
n3.__e = n3.__c.base = u3.__e;
break;
}
return b(n3);
}
}
function g(n3) {
(!n3.__d && (n3.__d = true) && t.push(n3) && !m.__r++ || r !== l.debounceRendering) && ((r = l.debounceRendering) || o)(m);
}
function m() {
var n3, l3, u3, i4, r3, o3, f3, e3;
for (t.sort(function(n4, l4) {
return n4.__v.__b - l4.__v.__b;
}); n3 = t.shift(); )
n3.__d && (l3 = t.length, i4 = void 0, r3 = void 0, f3 = (o3 = (u3 = n3).__v).__e, (e3 = u3.__P) && (i4 = [], (r3 = a({}, o3)).__v = o3.__v + 1, z(e3, o3, r3, u3.__n, void 0 !== e3.ownerSVGElement, null != o3.__h ? [f3] : null, i4, null == f3 ? k(o3) : f3, o3.__h), L(i4, o3), o3.__e != f3 && b(o3)), t.length > l3 && t.sort(function(n4, l4) {
return n4.__v.__b - l4.__v.__b;
}));
m.__r = 0;
}
function w(n3, l3, u3, i4, t3, r3, o3, f3, s4, a3) {
var h3, v3, p3, _3, b3, g4, m3, w4 = i4 && i4.__k || c2, A4 = w4.length;
for (u3.__k = [], h3 = 0; h3 < l3.length; h3++)
if (null != (_3 = u3.__k[h3] = null == (_3 = l3[h3]) || "boolean" == typeof _3 ? null : "string" == typeof _3 || "number" == typeof _3 || "bigint" == typeof _3 ? y(null, _3, null, null, _3) : Array.isArray(_3) ? y(d, { children: _3 }, null, null, null) : _3.__b > 0 ? y(_3.type, _3.props, _3.key, _3.ref ? _3.ref : null, _3.__v) : _3)) {
if (_3.__ = u3, _3.__b = u3.__b + 1, null === (p3 = w4[h3]) || p3 && _3.key == p3.key && _3.type === p3.type)
w4[h3] = void 0;
else
for (v3 = 0; v3 < A4; v3++) {
if ((p3 = w4[v3]) && _3.key == p3.key && _3.type === p3.type) {
w4[v3] = void 0;
break;
}
p3 = null;
}
z(n3, _3, p3 = p3 || e, t3, r3, o3, f3, s4, a3), b3 = _3.__e, (v3 = _3.ref) && p3.ref != v3 && (m3 || (m3 = []), p3.ref && m3.push(p3.ref, null, _3), m3.push(v3, _3.__c || b3, _3)), null != b3 ? (null == g4 && (g4 = b3), "function" == typeof _3.type && _3.__k === p3.__k ? _3.__d = s4 = x(_3, s4, n3) : s4 = P(n3, _3, p3, w4, b3, s4), "function" == typeof u3.type && (u3.__d = s4)) : s4 && p3.__e == s4 && s4.parentNode != n3 && (s4 = k(p3));
}
for (u3.__e = g4, h3 = A4; h3--; )
null != w4[h3] && ("function" == typeof u3.type && null != w4[h3].__e && w4[h3].__e == u3.__d && (u3.__d = C(i4).nextSibling), O(w4[h3], w4[h3]));
if (m3)
for (h3 = 0; h3 < m3.length; h3++)
N(m3[h3], m3[++h3], m3[++h3]);
}
function x(n3, l3, u3) {
for (var i4, t3 = n3.__k, r3 = 0; t3 && r3 < t3.length; r3++)
(i4 = t3[r3]) && (i4.__ = n3, l3 = "function" == typeof i4.type ? x(i4, l3, u3) : P(u3, i4, i4, t3, i4.__e, l3));
return l3;
}
function A(n3, l3) {
return l3 = l3 || [], null == n3 || "boolean" == typeof n3 || (Array.isArray(n3) ? n3.some(function(n4) {
A(n4, l3);
}) : l3.push(n3)), l3;
}
function P(n3, l3, u3, i4, t3, r3) {
var o3, f3, e3;
if (void 0 !== l3.__d)
o3 = l3.__d, l3.__d = void 0;
else if (null == u3 || t3 != r3 || null == t3.parentNode)
n:
if (null == r3 || r3.parentNode !== n3)
n3.appendChild(t3), o3 = null;
else {
for (f3 = r3, e3 = 0; (f3 = f3.nextSibling) && e3 < i4.length; e3 += 1)
if (f3 == t3)
break n;
n3.insertBefore(t3, r3), o3 = r3;
}
return void 0 !== o3 ? o3 : t3.nextSibling;
}
function C(n3) {
var l3, u3, i4;
if (null == n3.type || "string" == typeof n3.type)
return n3.__e;
if (n3.__k) {
for (l3 = n3.__k.length - 1; l3 >= 0; l3--)
if ((u3 = n3.__k[l3]) && (i4 = C(u3)))
return i4;
}
return null;
}
function $(n3, l3, u3, i4, t3) {
var r3;
for (r3 in u3)
"children" === r3 || "key" === r3 || r3 in l3 || I(n3, r3, null, u3[r3], i4);
for (r3 in l3)
t3 && "function" != typeof l3[r3] || "children" === r3 || "key" === r3 || "value" === r3 || "checked" === r3 || u3[r3] === l3[r3] || I(n3, r3, l3[r3], u3[r3], i4);
}
function H(n3, l3, u3) {
"-" === l3[0] ? n3.setProperty(l3, null == u3 ? "" : u3) : n3[l3] = null == u3 ? "" : "number" != typeof u3 || s2.test(l3) ? u3 : u3 + "px";
}
function I(n3, l3, u3, i4, t3) {
var r3;
n:
if ("style" === l3)
if ("string" == typeof u3)
n3.style.cssText = u3;
else {
if ("string" == typeof i4 && (n3.style.cssText = i4 = ""), i4)
for (l3 in i4)
u3 && l3 in u3 || H(n3.style, l3, "");
if (u3)
for (l3 in u3)
i4 && u3[l3] === i4[l3] || H(n3.style, l3, u3[l3]);
}
else if ("o" === l3[0] && "n" === l3[1])
r3 = l3 !== (l3 = l3.replace(/Capture$/, "")), l3 = l3.toLowerCase() in n3 ? l3.toLowerCase().slice(2) : l3.slice(2), n3.l || (n3.l = {}), n3.l[l3 + r3] = u3, u3 ? i4 || n3.addEventListener(l3, r3 ? j : T, r3) : n3.removeEventListener(l3, r3 ? j : T, r3);
else if ("dangerouslySetInnerHTML" !== l3) {
if (t3)
l3 = l3.replace(/xlink(H|:h)/, "h").replace(/sName$/, "s");
else if ("width" !== l3 && "height" !== l3 && "href" !== l3 && "list" !== l3 && "form" !== l3 && "tabIndex" !== l3 && "download" !== l3 && l3 in n3)
try {
n3[l3] = null == u3 ? "" : u3;
break n;
} catch (n4) {
}
"function" == typeof u3 || (null == u3 || false === u3 && -1 == l3.indexOf("-") ? n3.removeAttribute(l3) : n3.setAttribute(l3, u3));
}
}
function T(n3) {
return this.l[n3.type + false](l.event ? l.event(n3) : n3);
}
function j(n3) {
return this.l[n3.type + true](l.event ? l.event(n3) : n3);
}
function z(n3, u3, i4, t3, r3, o3, f3, e3, c4) {
var s4, h3, v3, y3, p3, k4, b3, g4, m3, x4, A4, P3, C3, $3, H3, I3 = u3.type;
if (void 0 !== u3.constructor)
return null;
null != i4.__h && (c4 = i4.__h, e3 = u3.__e = i4.__e, u3.__h = null, o3 = [e3]), (s4 = l.__b) && s4(u3);
try {
n:
if ("function" == typeof I3) {
if (g4 = u3.props, m3 = (s4 = I3.contextType) && t3[s4.__c], x4 = s4 ? m3 ? m3.props.value : s4.__ : t3, i4.__c ? b3 = (h3 = u3.__c = i4.__c).__ = h3.__E : ("prototype" in I3 && I3.prototype.render ? u3.__c = h3 = new I3(g4, x4) : (u3.__c = h3 = new _(g4, x4), h3.constructor = I3, h3.render = S), m3 && m3.sub(h3), h3.props = g4, h3.state || (h3.state = {}), h3.context = x4, h3.__n = t3, v3 = h3.__d = true, h3.__h = [], h3._sb = []), null == h3.__s && (h3.__s = h3.state), null != I3.getDerivedStateFromProps && (h3.__s == h3.state && (h3.__s = a({}, h3.__s)), a(h3.__s, I3.getDerivedStateFromProps(g4, h3.__s))), y3 = h3.props, p3 = h3.state, h3.__v = u3, v3)
null == I3.getDerivedStateFromProps && null != h3.componentWillMount && h3.componentWillMount(), null != h3.componentDidMount && h3.__h.push(h3.componentDidMount);
else {
if (null == I3.getDerivedStateFromProps && g4 !== y3 && null != h3.componentWillReceiveProps && h3.componentWillReceiveProps(g4, x4), !h3.__e && null != h3.shouldComponentUpdate && false === h3.shouldComponentUpdate(g4, h3.__s, x4) || u3.__v === i4.__v) {
for (u3.__v !== i4.__v && (h3.props = g4, h3.state = h3.__s, h3.__d = false), h3.__e = false, u3.__e = i4.__e, u3.__k = i4.__k, u3.__k.forEach(function(n4) {
n4 && (n4.__ = u3);
}), A4 = 0; A4 < h3._sb.length; A4++)
h3.__h.push(h3._sb[A4]);
h3._sb = [], h3.__h.length && f3.push(h3);
break n;
}
null != h3.componentWillUpdate && h3.componentWillUpdate(g4, h3.__s, x4), null != h3.componentDidUpdate && h3.__h.push(function() {
h3.componentDidUpdate(y3, p3, k4);
});
}
if (h3.context = x4, h3.props = g4, h3.__P = n3, P3 = l.__r, C3 = 0, "prototype" in I3 && I3.prototype.render) {
for (h3.state = h3.__s, h3.__d = false, P3 && P3(u3), s4 = h3.render(h3.props, h3.state, h3.context), $3 = 0; $3 < h3._sb.length; $3++)
h3.__h.push(h3._sb[$3]);
h3._sb = [];
} else
do {
h3.__d = false, P3 && P3(u3), s4 = h3.render(h3.props, h3.state, h3.context), h3.state = h3.__s;
} while (h3.__d && ++C3 < 25);
h3.state = h3.__s, null != h3.getChildContext && (t3 = a(a({}, t3), h3.getChildContext())), v3 || null == h3.getSnapshotBeforeUpdate || (k4 = h3.getSnapshotBeforeUpdate(y3, p3)), H3 = null != s4 && s4.type === d && null == s4.key ? s4.props.children : s4, w(n3, Array.isArray(H3) ? H3 : [H3], u3, i4, t3, r3, o3, f3, e3, c4), h3.base = u3.__e, u3.__h = null, h3.__h.length && f3.push(h3), b3 && (h3.__E = h3.__ = null), h3.__e = false;
} else
null == o3 && u3.__v === i4.__v ? (u3.__k = i4.__k, u3.__e = i4.__e) : u3.__e = M(i4.__e, u3, i4, t3, r3, o3, f3, c4);
(s4 = l.diffed) && s4(u3);
} catch (n4) {
u3.__v = null, (c4 || null != o3) && (u3.__e = e3, u3.__h = !!c4, o3[o3.indexOf(e3)] = null), l.__e(n4, u3, i4);
}
}
function L(n3, u3) {
l.__c && l.__c(u3, n3), n3.some(function(u4) {
try {
n3 = u4.__h, u4.__h = [], n3.some(function(n4) {
n4.call(u4);
});
} catch (n4) {
l.__e(n4, u4.__v);
}
});
}
function M(l3, u3, i4, t3, r3, o3, f3, c4) {
var s4, a3, v3, y3 = i4.props, p3 = u3.props, d3 = u3.type, _3 = 0;
if ("svg" === d3 && (r3 = true), null != o3) {
for (; _3 < o3.length; _3++)
if ((s4 = o3[_3]) && "setAttribute" in s4 == !!d3 && (d3 ? s4.localName === d3 : 3 === s4.nodeType)) {
l3 = s4, o3[_3] = null;
break;
}
}
if (null == l3) {
if (null === d3)
return document.createTextNode(p3);
l3 = r3 ? document.createElementNS("http://www.w3.org/2000/svg", d3) : document.createElement(d3, p3.is && p3), o3 = null, c4 = false;
}
if (null === d3)
y3 === p3 || c4 && l3.data === p3 || (l3.data = p3);
else {
if (o3 = o3 && n2.call(l3.childNodes), a3 = (y3 = i4.props || e).dangerouslySetInnerHTML, v3 = p3.dangerouslySetInnerHTML, !c4) {
if (null != o3)
for (y3 = {}, _3 = 0; _3 < l3.attributes.length; _3++)
y3[l3.attributes[_3].name] = l3.attributes[_3].value;
(v3 || a3) && (v3 && (a3 && v3.__html == a3.__html || v3.__html === l3.innerHTML) || (l3.innerHTML = v3 && v3.__html || ""));
}
if ($(l3, p3, y3, r3, c4), v3)
u3.__k = [];
else if (_3 = u3.props.children, w(l3, Array.isArray(_3) ? _3 : [_3], u3, i4, t3, r3 && "foreignObject" !== d3, o3, f3, o3 ? o3[0] : i4.__k && k(i4, 0), c4), null != o3)
for (_3 = o3.length; _3--; )
null != o3[_3] && h(o3[_3]);
c4 || ("value" in p3 && void 0 !== (_3 = p3.value) && (_3 !== l3.value || "progress" === d3 && !_3 || "option" === d3 && _3 !== y3.value) && I(l3, "value", _3, y3.value, false), "checked" in p3 && void 0 !== (_3 = p3.checked) && _3 !== l3.checked && I(l3, "checked", _3, y3.checked, false));
}
return l3;
}
function N(n3, u3, i4) {
try {
"function" == typeof n3 ? n3(u3) : n3.current = u3;
} catch (n4) {
l.__e(n4, i4);
}
}
function O(n3, u3, i4) {
var t3, r3;
if (l.unmount && l.unmount(n3), (t3 = n3.ref) && (t3.current && t3.current !== n3.__e || N(t3, null, u3)), null != (t3 = n3.__c)) {
if (t3.componentWillUnmount)
try {
t3.componentWillUnmount();
} catch (n4) {
l.__e(n4, u3);
}
t3.base = t3.__P = null, n3.__c = void 0;
}
if (t3 = n3.__k)
for (r3 = 0; r3 < t3.length; r3++)
t3[r3] && O(t3[r3], u3, i4 || "function" != typeof n3.type);
i4 || null == n3.__e || h(n3.__e), n3.__ = n3.__e = n3.__d = void 0;
}
function S(n3, l3, u3) {
return this.constructor(n3, u3);
}
function q(u3, i4, t3) {
var r3, o3, f3;
l.__ && l.__(u3, i4), o3 = (r3 = "function" == typeof t3) ? null : t3 && t3.__k || i4.__k, f3 = [], z(i4, u3 = (!r3 && t3 || i4).__k = v(d, null, [u3]), o3 || e, e, void 0 !== i4.ownerSVGElement, !r3 && t3 ? [t3] : o3 ? null : i4.firstChild ? n2.call(i4.childNodes) : null, f3, !r3 && t3 ? t3 : o3 ? o3.__e : i4.firstChild, r3), L(f3, u3);
}
function B(n3, l3) {
q(n3, l3, B);
}
function D(l3, u3, i4) {
var t3, r3, o3, f3 = a({}, l3.props);
for (o3 in u3)
"key" == o3 ? t3 = u3[o3] : "ref" == o3 ? r3 = u3[o3] : f3[o3] = u3[o3];
return arguments.length > 2 && (f3.children = arguments.length > 3 ? n2.call(arguments, 2) : i4), y(l3.type, f3, t3 || l3.key, r3 || l3.ref, null);
}
function E(n3, l3) {
var u3 = { __c: l3 = "__cC" + f++, __: n3, Consumer: function(n4, l4) {
return n4.children(l4);
}, Provider: function(n4) {
var u4, i4;
return this.getChildContext || (u4 = [], (i4 = {})[l3] = this, this.getChildContext = function() {
return i4;
}, this.shouldComponentUpdate = function(n5) {
this.props.value !== n5.value && u4.some(function(n6) {
n6.__e = true, g(n6);
});
}, this.sub = function(n5) {
u4.push(n5);
var l4 = n5.componentWillUnmount;
n5.componentWillUnmount = function() {
u4.splice(u4.indexOf(n5), 1), l4 && l4.call(n5);
};
}), n4.children;
} };
return u3.Provider.__ = u3.Consumer.contextType = u3;
}
n2 = c2.slice, l = { __e: function(n3, l3, u3, i4) {
for (var t3, r3, o3; l3 = l3.__; )
if ((t3 = l3.__c) && !t3.__)
try {
if ((r3 = t3.constructor) && null != r3.getDerivedStateFromError && (t3.setState(r3.getDerivedStateFromError(n3)), o3 = t3.__d), null != t3.componentDidCatch && (t3.componentDidCatch(n3, i4 || {}), o3 = t3.__d), o3)
return t3.__E = t3;
} catch (l4) {
n3 = l4;
}
throw n3;
} }, u = 0, i2 = function(n3) {
return null != n3 && void 0 === n3.constructor;
}, _.prototype.setState = function(n3, l3) {
var u3;
u3 = null != this.__s && this.__s !== this.state ? this.__s : this.__s = a({}, this.state), "function" == typeof n3 && (n3 = n3(a({}, u3), this.props)), n3 && a(u3, n3), null != n3 && this.__v && (l3 && this._sb.push(l3), g(this));
}, _.prototype.forceUpdate = function(n3) {
this.__v && (this.__e = true, n3 && this.__h.push(n3), g(this));
}, _.prototype.render = d, t = [], o = "function" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, m.__r = 0, f = 0;
// node_modules/preact/hooks/dist/hooks.module.js
var t2;
var r2;
var u2;
var i3;
var o2 = 0;
var f2 = [];
var c3 = [];
var e2 = l.__b;
var a2 = l.__r;
var v2 = l.diffed;
var l2 = l.__c;
var m2 = l.unmount;
function d2(t3, u3) {
l.__h && l.__h(r2, t3, o2 || u3), o2 = 0;
var i4 = r2.__H || (r2.__H = { __: [], __h: [] });
return t3 >= i4.__.length && i4.__.push({ __V: c3 }), i4.__[t3];
}
function p2(n3) {
return o2 = 1, y2(B2, n3);
}
function y2(n3, u3, i4) {
var o3 = d2(t2++, 2);
if (o3.t = n3, !o3.__c && (o3.__ = [i4 ? i4(u3) : B2(void 0, u3), function(n4) {
var t3 = o3.__N ? o3.__N[0] : o3.__[0], r3 = o3.t(t3, n4);
t3 !== r3 && (o3.__N = [r3, o3.__[1]], o3.__c.setState({}));
}], o3.__c = r2, !r2.u)) {
r2.u = true;
var f3 = r2.shouldComponentUpdate;
r2.shouldComponentUpdate = function(n4, t3, r3) {
if (!o3.__c.__H)
return true;
var u4 = o3.__c.__H.__.filter(function(n5) {
return n5.__c;
});
if (u4.every(function(n5) {
return !n5.__N;
}))
return !f3 || f3.call(this, n4, t3, r3);
var i5 = false;
return u4.forEach(function(n5) {
if (n5.__N) {
var t4 = n5.__[0];
n5.__ = n5.__N, n5.__N = void 0, t4 !== n5.__[0] && (i5 = true);
}
}), !(!i5 && o3.__c.props === n4) && (!f3 || f3.call(this, n4, t3, r3));
};
}
return o3.__N || o3.__;
}
function h2(u3, i4) {
var o3 = d2(t2++, 3);
!l.__s && z2(o3.__H, i4) && (o3.__ = u3, o3.i = i4, r2.__H.__h.push(o3));
}
function s3(u3, i4) {
var o3 = d2(t2++, 4);
!l.__s && z2(o3.__H, i4) && (o3.__ = u3, o3.i = i4, r2.__h.push(o3));
}
function _2(n3) {
return o2 = 5, F(function() {
return { current: n3 };
}, []);
}
function A2(n3, t3, r3) {
o2 = 6, s3(function() {
return "function" == typeof n3 ? (n3(t3()), function() {
return n3(null);
}) : n3 ? (n3.current = t3(), function() {
return n3.current = null;
}) : void 0;
}, null == r3 ? r3 : r3.concat(n3));
}
function F(n3, r3) {
var u3 = d2(t2++, 7);
return z2(u3.__H, r3) ? (u3.__V = n3(), u3.i = r3, u3.__h = n3, u3.__V) : u3.__;
}
function T2(n3, t3) {
return o2 = 8, F(function() {
return n3;
}, t3);
}
function q2(n3) {
var u3 = r2.context[n3.__c], i4 = d2(t2++, 9);
return i4.c = n3, u3 ? (null == i4.__ && (i4.__ = true, u3.sub(r2)), u3.props.value) : n3.__;
}
function x2(t3, r3) {
l.useDebugValue && l.useDebugValue(r3 ? r3(t3) : t3);
}
function V() {
var n3 = d2(t2++, 11);
if (!n3.__) {
for (var u3 = r2.__v; null !== u3 && !u3.__m && null !== u3.__; )
u3 = u3.__;
var i4 = u3.__m || (u3.__m = [0, 0]);
n3.__ = "P" + i4[0] + "-" + i4[1]++;
}
return n3.__;
}
function b2() {
for (var t3; t3 = f2.shift(); )
if (t3.__P && t3.__H)
try {
t3.__H.__h.forEach(k2), t3.__H.__h.forEach(w2), t3.__H.__h = [];
} catch (r3) {
t3.__H.__h = [], l.__e(r3, t3.__v);
}
}
l.__b = function(n3) {
r2 = null, e2 && e2(n3);
}, l.__r = function(n3) {
a2 && a2(n3), t2 = 0;
var i4 = (r2 = n3.__c).__H;
i4 && (u2 === r2 ? (i4.__h = [], r2.__h = [], i4.__.forEach(function(n4) {
n4.__N && (n4.__ = n4.__N), n4.__V = c3, n4.__N = n4.i = void 0;
})) : (i4.__h.forEach(k2), i4.__h.forEach(w2), i4.__h = [])), u2 = r2;
}, l.diffed = function(t3) {
v2 && v2(t3);
var o3 = t3.__c;
o3 && o3.__H && (o3.__H.__h.length && (1 !== f2.push(o3) && i3 === l.requestAnimationFrame || ((i3 = l.requestAnimationFrame) || j2)(b2)), o3.__H.__.forEach(function(n3) {
n3.i && (n3.__H = n3.i), n3.__V !== c3 && (n3.__ = n3.__V), n3.i = void 0, n3.__V = c3;
})), u2 = r2 = null;
}, l.__c = function(t3, r3) {
r3.some(function(t4) {
try {
t4.__h.forEach(k2), t4.__h = t4.__h.filter(function(n3) {
return !n3.__ || w2(n3);
});
} catch (u3) {
r3.some(function(n3) {
n3.__h && (n3.__h = []);
}), r3 = [], l.__e(u3, t4.__v);
}
}), l2 && l2(t3, r3);
}, l.unmount = function(t3) {
m2 && m2(t3);
var r3, u3 = t3.__c;
u3 && u3.__H && (u3.__H.__.forEach(function(n3) {
try {
k2(n3);
} catch (n4) {
r3 = n4;
}
}), u3.__H = void 0, r3 && l.__e(r3, u3.__v));
};
var g2 = "function" == typeof requestAnimationFrame;
function j2(n3) {
var t3, r3 = function() {
clearTimeout(u3), g2 && cancelAnimationFrame(t3), setTimeout(n3);
}, u3 = setTimeout(r3, 100);
g2 && (t3 = requestAnimationFrame(r3));
}
function k2(n3) {
var t3 = r2, u3 = n3.__c;
"function" == typeof u3 && (n3.__c = void 0, u3()), r2 = t3;
}
function w2(n3) {
var t3 = r2;
n3.__c = n3.__(), r2 = t3;
}
function z2(n3, t3) {
return !n3 || n3.length !== t3.length || t3.some(function(t4, r3) {
return t4 !== n3[r3];
});
}
function B2(n3, t3) {
return "function" == typeof t3 ? t3(n3) : t3;
}
// node_modules/preact/compat/dist/compat.module.js
function g3(n3, t3) {
for (var e3 in t3)
n3[e3] = t3[e3];
return n3;
}
function C2(n3, t3) {
for (var e3 in n3)
if ("__source" !== e3 && !(e3 in t3))
return true;
for (var r3 in t3)
if ("__source" !== r3 && n3[r3] !== t3[r3])
return true;
return false;
}
function E2(n3, t3) {
return n3 === t3 && (0 !== n3 || 1 / n3 == 1 / t3) || n3 != n3 && t3 != t3;
}
function w3(n3) {
this.props = n3;
}
function x3(n3, e3) {
function r3(n4) {
var t3 = this.props.ref, r4 = t3 == n4.ref;
return !r4 && t3 && (t3.call ? t3(null) : t3.current = null), e3 ? !e3(this.props, n4) || !r4 : C2(this.props, n4);
}
function u3(e4) {
return this.shouldComponentUpdate = r3, v(n3, e4);
}
return u3.displayName = "Memo(" + (n3.displayName || n3.name) + ")", u3.prototype.isReactComponent = true, u3.__f = true, u3;
}
(w3.prototype = new _()).isPureReactComponent = true, w3.prototype.shouldComponentUpdate = function(n3, t3) {
return C2(this.props, n3) || C2(this.state, t3);
};
var R = l.__b;
l.__b = function(n3) {
n3.type && n3.type.__f && n3.ref && (n3.props.ref = n3.ref, n3.ref = null), R && R(n3);
};
var N2 = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.forward_ref") || 3911;
function k3(n3) {
function t3(t4) {
var e3 = g3({}, t4);
return delete e3.ref, n3(e3, t4.ref || null);
}
return t3.$$typeof = N2, t3.render = t3, t3.prototype.isReactComponent = t3.__f = true, t3.displayName = "ForwardRef(" + (n3.displayName || n3.name) + ")", t3;
}
var A3 = function(n3, t3) {
return null == n3 ? null : A(A(n3).map(t3));
};
var O2 = { map: A3, forEach: A3, count: function(n3) {
return n3 ? A(n3).length : 0;
}, only: function(n3) {
var t3 = A(n3);
if (1 !== t3.length)
throw "Children.only";
return t3[0];
}, toArray: A };
var T3 = l.__e;
l.__e = function(n3, t3, e3, r3) {
if (n3.then) {
for (var u3, o3 = t3; o3 = o3.__; )
if ((u3 = o3.__c) && u3.__c)
return null == t3.__e && (t3.__e = e3.__e, t3.__k = e3.__k), u3.__c(n3, t3);
}
T3(n3, t3, e3, r3);
};
var I2 = l.unmount;
function L2(n3, t3, e3) {
return n3 && (n3.__c && n3.__c.__H && (n3.__c.__H.__.forEach(function(n4) {
"function" == typeof n4.__c && n4.__c();
}), n3.__c.__H = null), null != (n3 = g3({}, n3)).__c && (n3.__c.__P === e3 && (n3.__c.__P = t3), n3.__c = null), n3.__k = n3.__k && n3.__k.map(function(n4) {
return L2(n4, t3, e3);
})), n3;
}
function U(n3, t3, e3) {
return n3 && (n3.__v = null, n3.__k = n3.__k && n3.__k.map(function(n4) {
return U(n4, t3, e3);
}), n3.__c && n3.__c.__P === t3 && (n3.__e && e3.insertBefore(n3.__e, n3.__d), n3.__c.__e = true, n3.__c.__P = e3)), n3;
}
function D2() {
this.__u = 0, this.t = null, this.__b = null;
}
function F2(n3) {
var t3 = n3.__.__c;
return t3 && t3.__a && t3.__a(n3);
}
function M2(n3) {
var e3, r3, u3;
function o3(o4) {
if (e3 || (e3 = n3()).then(function(n4) {
r3 = n4.default || n4;
}, function(n4) {
u3 = n4;
}), u3)
throw u3;
if (!r3)
throw e3;
return v(r3, o4);
}
return o3.displayName = "Lazy", o3.__f = true, o3;
}
function V2() {
this.u = null, this.o = null;
}
l.unmount = function(n3) {
var t3 = n3.__c;
t3 && t3.__R && t3.__R(), t3 && true === n3.__h && (n3.type = null), I2 && I2(n3);
}, (D2.prototype = new _()).__c = function(n3, t3) {
var e3 = t3.__c, r3 = this;
null == r3.t && (r3.t = []), r3.t.push(e3);
var u3 = F2(r3.__v), o3 = false, i4 = function() {
o3 || (o3 = true, e3.__R = null, u3 ? u3(l3) : l3());
};
e3.__R = i4;
var l3 = function() {
if (!--r3.__u) {
if (r3.state.__a) {
var n4 = r3.state.__a;
r3.__v.__k[0] = U(n4, n4.__c.__P, n4.__c.__O);
}
var t4;
for (r3.setState({ __a: r3.__b = null }); t4 = r3.t.pop(); )
t4.forceUpdate();
}
}, c4 = true === t3.__h;
r3.__u++ || c4 || r3.setState({ __a: r3.__b = r3.__v.__k[0] }), n3.then(i4, i4);
}, D2.prototype.componentWillUnmount = function() {
this.t = [];
}, D2.prototype.render = function(n3, e3) {
if (this.__b) {
if (this.__v.__k) {
var r3 = document.createElement("div"), o3 = this.__v.__k[0].__c;
this.__v.__k[0] = L2(this.__b, r3, o3.__O = o3.__P);
}
this.__b = null;
}
var i4 = e3.__a && v(d, null, n3.fallback);
return i4 && (i4.__h = null), [v(d, null, e3.__a ? null : n3.children), i4];
};
var W = function(n3, t3, e3) {
if (++e3[1] === e3[0] && n3.o.delete(t3), n3.props.revealOrder && ("t" !== n3.props.revealOrder[0] || !n3.o.size))
for (e3 = n3.u; e3; ) {
for (; e3.length > 3; )
e3.pop()();
if (e3[1] < e3[0])
break;
n3.u = e3 = e3[2];
}
};
function P2(n3) {
return this.getChildContext = function() {
return n3.context;
}, n3.children;
}
function $2(n3) {
var e3 = this, r3 = n3.i;
e3.componentWillUnmount = function() {
q(null, e3.l), e3.l = null, e3.i = null;
}, e3.i && e3.i !== r3 && e3.componentWillUnmount(), n3.__v ? (e3.l || (e3.i = r3, e3.l = { nodeType: 1, parentNode: r3, childNodes: [], appendChild: function(n4) {
this.childNodes.push(n4), e3.i.appendChild(n4);
}, insertBefore: function(n4, t3) {
this.childNodes.push(n4), e3.i.appendChild(n4);
}, removeChild: function(n4) {
this.childNodes.splice(this.childNodes.indexOf(n4) >>> 1, 1), e3.i.removeChild(n4);
} }), q(v(P2, { context: e3.context }, n3.__v), e3.l)) : e3.l && e3.componentWillUnmount();
}
function j3(n3, e3) {
var r3 = v($2, { __v: n3, i: e3 });
return r3.containerInfo = e3, r3;
}
(V2.prototype = new _()).__a = function(n3) {
var t3 = this, e3 = F2(t3.__v), r3 = t3.o.get(n3);
return r3[0]++, function(u3) {
var o3 = function() {
t3.props.revealOrder ? (r3.push(u3), W(t3, n3, r3)) : u3();
};
e3 ? e3(o3) : o3();
};
}, V2.prototype.render = function(n3) {
this.u = null, this.o = /* @__PURE__ */ new Map();
var t3 = A(n3.children);
n3.revealOrder && "b" === n3.revealOrder[0] && t3.reverse();
for (var e3 = t3.length; e3--; )
this.o.set(t3[e3], this.u = [1, 0, this.u]);
return n3.children;
}, V2.prototype.componentDidUpdate = V2.prototype.componentDidMount = function() {
var n3 = this;
this.o.forEach(function(t3, e3) {
W(n3, e3, t3);
});
};
var z3 = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103;
var B3 = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;
var H2 = "undefined" != typeof document;
var Z = function(n3) {
return ("undefined" != typeof Symbol && "symbol" == typeof Symbol() ? /fil|che|rad/i : /fil|che|ra/i).test(n3);
};
function Y(n3, t3, e3) {
return null == t3.__k && (t3.textContent = ""), q(n3, t3), "function" == typeof e3 && e3(), n3 ? n3.__c : null;
}
function q3(n3, t3, e3) {
return B(n3, t3), "function" == typeof e3 && e3(), n3 ? n3.__c : null;
}
_.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach(function(t3) {
Object.defineProperty(_.prototype, t3, { configurable: true, get: function() {
return this["UNSAFE_" + t3];
}, set: function(n3) {
Object.defineProperty(this, t3, { configurable: true, writable: true, value: n3 });
} });
});
var G = l.event;
function J() {
}
function K() {
return this.cancelBubble;
}
function Q() {
return this.defaultPrevented;
}
l.event = function(n3) {
return G && (n3 = G(n3)), n3.persist = J, n3.isPropagationStopped = K, n3.isDefaultPrevented = Q, n3.nativeEvent = n3;
};
var X;
var nn = { configurable: true, get: function() {
return this.class;
} };
var tn = l.vnode;
l.vnode = function(n3) {
var t3 = n3.type, e3 = n3.props, u3 = e3;
if ("string" == typeof t3) {
var o3 = -1 === t3.indexOf("-");
for (var i4 in u3 = {}, e3) {
var l3 = e3[i4];
H2 && "children" === i4 && "noscript" === t3 || "value" === i4 && "defaultValue" in e3 && null == l3 || ("defaultValue" === i4 && "value" in e3 && null == e3.value ? i4 = "value" : "download" === i4 && true === l3 ? l3 = "" : /ondoubleclick/i.test(i4) ? i4 = "ondblclick" : /^onchange(textarea|input)/i.test(i4 + t3) && !Z(e3.type) ? i4 = "oninput" : /^onfocus$/i.test(i4) ? i4 = "onfocusin" : /^onblur$/i.test(i4) ? i4 = "onfocusout" : /^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i4) ? i4 = i4.toLowerCase() : o3 && B3.test(i4) ? i4 = i4.replace(/[A-Z0-9]/g, "-$&").toLowerCase() : null === l3 && (l3 = void 0), /^oninput$/i.test(i4) && (i4 = i4.toLowerCase(), u3[i4] && (i4 = "oninputCapture")), u3[i4] = l3);
}
"select" == t3 && u3.multiple && Array.isArray(u3.value) && (u3.value = A(e3.children).forEach(function(n4) {
n4.props.selected = -1 != u3.value.indexOf(n4.props.value);
})), "select" == t3 && null != u3.defaultValue && (u3.value = A(e3.children).forEach(function(n4) {
n4.props.selected = u3.multiple ? -1 != u3.defaultValue.indexOf(n4.props.value) : u3.defaultValue == n4.props.value;
})), n3.props = u3, e3.class != e3.className && (nn.enumerable = "className" in e3, null != e3.className && (u3.class = e3.className), Object.defineProperty(u3, "className", nn));
}
n3.$$typeof = z3, tn && tn(n3);
};
var en = l.__r;
l.__r = function(n3) {
en && en(n3), X = n3.__c;
};
var rn = l.diffed;
l.diffed = function(n3) {
rn && rn(n3);
var t3 = n3.props, e3 = n3.__e;
null != e3 && "textarea" === n3.type && "value" in t3 && t3.value !== e3.value && (e3.value = null == t3.value ? "" : t3.value), X = null;
};
var un = { ReactCurrentDispatcher: { current: { readContext: function(n3) {
return X.__n[n3.__c].props.value;
} } } };
function ln(n3) {
return v.bind(null, n3);
}
function cn(n3) {
return !!n3 && n3.$$typeof === z3;
}
function fn(n3) {
return cn(n3) ? D.apply(null, arguments) : n3;
}
function an(n3) {
return !!n3.__k && (q(null, n3), true);
}
function sn(n3) {
return n3 && (n3.base || 1 === n3.nodeType && n3) || null;
}
var hn = function(n3, t3) {
return n3(t3);
};
var vn = function(n3, t3) {
return n3(t3);
};
var dn = d;
function pn(n3) {
n3();
}
function mn(n3) {
return n3;
}
function yn() {
return [false, pn];
}
var _n = s3;
function bn(n3, t3) {
var e3 = t3(), r3 = p2({ h: { __: e3, v: t3 } }), u3 = r3[0].h, o3 = r3[1];
return s3(function() {
u3.__ = e3, u3.v = t3, E2(u3.__, t3()) || o3({ h: u3 });
}, [n3, e3, t3]), h2(function() {
return E2(u3.__, u3.v()) || o3({ h: u3 }), n3(function() {
E2(u3.__, u3.v()) || o3({ h: u3 });
});
}, [n3]), e3;
}
var Sn = { useState: p2, useId: V, useReducer: y2, useEffect: h2, useLayoutEffect: s3, useInsertionEffect: _n, useTransition: yn, useDeferredValue: mn, useSyncExternalStore: bn, startTransition: pn, useRef: _2, useImperativeHandle: A2, useMemo: F, useCallback: T2, useContext: q2, useDebugValue: x2, version: "17.0.2", Children: O2, render: Y, hydrate: q3, unmountComponentAtNode: an, createPortal: j3, createElement: v, createContext: E, createFactory: ln, cloneElement: fn, createRef: p, Fragment: d, isValidElement: cn, findDOMNode: sn, Component: _, PureComponent: w3, memo: x3, forwardRef: k3, flushSync: vn, unstable_batchedUpdates: hn, StrictMode: dn, Suspense: D2, SuspenseList: V2, lazy: M2, __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: un };
// src/components/search/index.tsx
var import_fuzzysort2 = __toESM(require_fuzzysort());
// node_modules/react-icons/lib/esm/iconContext.js
var DefaultContext = {
color: void 0,
size: void 0,
className: void 0,
style: void 0,
attr: void 0
};
var IconContext = Sn.createContext && Sn.createContext(DefaultContext);
// node_modules/react-icons/lib/esm/iconBase.js
var __assign = function() {
__assign = Object.assign || function(t3) {
for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) {
s4 = arguments[i4];
for (var p3 in s4)
if (Object.prototype.hasOwnProperty.call(s4, p3))
t3[p3] = s4[p3];
}
return t3;
};
return __assign.apply(this, arguments);
};
var __rest = function(s4, e3) {
var t3 = {};
for (var p3 in s4)
if (Object.prototype.hasOwnProperty.call(s4, p3) && e3.indexOf(p3) < 0)
t3[p3] = s4[p3];
if (s4 != null && typeof Object.getOwnPropertySymbols === "function")
for (var i4 = 0, p3 = Object.getOwnPropertySymbols(s4); i4 < p3.length; i4++) {
if (e3.indexOf(p3[i4]) < 0 && Object.prototype.propertyIsEnumerable.call(s4, p3[i4]))
t3[p3[i4]] = s4[p3[i4]];
}
return t3;
};
function Tree2Element(tree) {
return tree && tree.map(function(node, i4) {
return Sn.createElement(node.tag, __assign({
key: i4
}, node.attr), Tree2Element(node.child));
});
}
function GenIcon(data) {
return function(props2) {
return Sn.createElement(IconBase, __assign({
attr: __assign({}, data.attr)
}, props2), Tree2Element(data.child));
};
}
function IconBase(props2) {
var elem = function(conf) {
var attr = props2.attr, size = props2.size, title = props2.title, svgProps = __rest(props2, ["attr", "size", "title"]);
var computedSize = size || conf.size || "1em";
var className;
if (conf.className)
className = conf.className;
if (props2.className)
className = (className ? className + " " : "") + props2.className;
return Sn.createElement("svg", __assign({
stroke: "currentColor",
fill: "currentColor",
strokeWidth: "0"
}, conf.attr, attr, svgProps, {
className,
style: __assign(__assign({
color: props2.color || conf.color
}, conf.style), props2.style),
height: computedSize,
width: computedSize,
xmlns: "http://www.w3.org/2000/svg"
}), title && Sn.createElement("title", null, title), props2.children);
};
return IconContext !== void 0 ? Sn.createElement(IconContext.Consumer, null, function(conf) {
return elem(conf);
}) : elem(DefaultContext);
}
// node_modules/react-icons/md/index.esm.js
function MdKeyboardArrowDown(props2) {
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "fill": "none", "d": "M0 0h24v24H0V0z" } }, { "tag": "path", "attr": { "d": "M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z" } }] })(props2);
}
function MdKeyboardArrowRight(props2) {
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "fill": "none", "d": "M0 0h24v24H0V0z" } }, { "tag": "path", "attr": { "d": "M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z" } }] })(props2);
}
function MdClose(props2) {
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "fill": "none", "d": "M0 0h24v24H0z" } }, { "tag": "path", "attr": { "d": "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" } }] })(props2);
}
// node_modules/react-icons/cg/index.esm.js
function CgChevronDoubleDown(props2) {
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none" }, "child": [{ "tag": "path", "attr": { "d": "M7.75735 5.63605L6.34314 7.05026L12 12.7071L17.6569 7.05029L16.2427 5.63608L12 9.87872L7.75735 5.63605Z", "fill": "currentColor" } }, { "tag": "path", "attr": { "d": "M6.34314 12.7071L7.75735 11.2929L12 15.5356L16.2427 11.2929L17.6569 12.7071L12 18.364L6.34314 12.7071Z", "fill": "currentColor" } }] })(props2);
}
function CgChevronDoubleUp(props2) {
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none" }, "child": [{ "tag": "path", "attr": { "d": "M17.6569 11.2929L16.2427 12.7071L12 8.46444L7.75735 12.7071L6.34314 11.2929L12 5.63605L17.6569 11.2929Z", "fill": "currentColor" } }, { "tag": "path", "attr": { "d": "M17.6569 16.9497L16.2427 18.3639L12 14.1213L7.75735 18.364L6.34314 16.9498L12 11.2929L17.6569 16.9497Z", "fill": "currentColor" } }] })(props2);
}
// node_modules/dexie/dist/modern/dexie.mjs
var _global = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : global;
var keys = Object.keys;
var isArray = Array.isArray;
if (typeof Promise !== "undefined" && !_global.Promise) {
_global.Promise = Promise;
}
function extend(obj, extension) {
if (typeof extension !== "object")
return obj;
keys(extension).forEach(function(key) {
obj[key] = extension[key];
});
return obj;
}
var getProto = Object.getPrototypeOf;
var _hasOwn = {}.hasOwnProperty;
function hasOwn(obj, prop) {
return _hasOwn.call(obj, prop);
}
function props(proto, extension) {
if (typeof extension === "function")
extension = extension(getProto(proto));
(typeof Reflect === "undefined" ? keys : Reflect.ownKeys)(extension).forEach((key) => {
setProp(proto, key, extension[key]);
});
}
var defineProperty = Object.defineProperty;
function setProp(obj, prop, functionOrGetSet, options) {
defineProperty(obj, prop, extend(functionOrGetSet && hasOwn(functionOrGetSet, "get") && typeof functionOrGetSet.get === "function" ? { get: functionOrGetSet.get, set: functionOrGetSet.set, configurable: true } : { value: functionOrGetSet, configurable: true, writable: true }, options));
}
function derive(Child) {
return {
from: function(Parent) {
Child.prototype = Object.create(Parent.prototype);
setProp(Child.prototype, "constructor", Child);
return {
extend: props.bind(null, Child.prototype)
};
}
};
}
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
function getPropertyDescriptor(obj, prop) {
const pd = getOwnPropertyDescriptor(obj, prop);
let proto;
return pd || (proto = getProto(obj)) && getPropertyDescriptor(proto, prop);
}
var _slice = [].slice;
function slice(args, start, end) {
return _slice.call(args, start, end);
}
function override(origFunc, overridedFactory) {
return overridedFactory(origFunc);
}
function assert(b3) {
if (!b3)
throw new Error("Assertion Failed");
}
function asap$1(fn2) {
if (_global.setImmediate)
setImmediate(fn2);
else
setTimeout(fn2, 0);
}
function arrayToObject(array, extractor) {
return array.reduce((result, item, i4) => {
var nameAndValue = extractor(item, i4);
if (nameAndValue)
result[nameAndValue[0]] = nameAndValue[1];
return result;
}, {});
}
function tryCatch(fn2, onerror, args) {
try {
fn2.apply(null, args);
} catch (ex) {
onerror && onerror(ex);
}
}
function getByKeyPath(obj, keyPath) {
if (hasOwn(obj, keyPath))
return obj[keyPath];
if (!keyPath)
return obj;
if (typeof keyPath !== "string") {
var rv = [];
for (var i4 = 0, l3 = keyPath.length; i4 < l3; ++i4) {
var val = getByKeyPath(obj, keyPath[i4]);
rv.push(val);
}
return rv;
}
var period = keyPath.indexOf(".");
if (period !== -1) {
var innerObj = obj[keyPath.substr(0, period)];
return innerObj === void 0 ? void 0 : getByKeyPath(innerObj, keyPath.substr(period + 1));
}
return void 0;
}
function setByKeyPath(obj, keyPath, value) {
if (!obj || keyPath === void 0)
return;
if ("isFrozen" in Object && Object.isFrozen(obj))
return;
if (typeof keyPath !== "string" && "length" in keyPath) {
assert(typeof value !== "string" && "length" in value);
for (var i4 = 0, l3 = keyPath.length; i4 < l3; ++i4) {
setByKeyPath(obj, keyPath[i4], value[i4]);
}
} else {
var period = keyPath.indexOf(".");
if (period !== -1) {
var currentKeyPath = keyPath.substr(0, period);
var remainingKeyPath = keyPath.substr(period + 1);
if (remainingKeyPath === "")
if (value === void 0) {
if (isArray(obj) && !isNaN(parseInt(currentKeyPath)))
obj.splice(currentKeyPath, 1);
else
delete obj[currentKeyPath];
} else
obj[currentKeyPath] = value;
else {
var innerObj = obj[currentKeyPath];
if (!innerObj || !hasOwn(obj, currentKeyPath))
innerObj = obj[currentKeyPath] = {};
setByKeyPath(innerObj, remainingKeyPath, value);
}
} else {
if (value === void 0) {
if (isArray(obj) && !isNaN(parseInt(keyPath)))
obj.splice(keyPath, 1);
else
delete obj[keyPath];
} else
obj[keyPath] = value;
}
}
}
function delByKeyPath(obj, keyPath) {
if (typeof keyPath === "string")
setByKeyPath(obj, keyPath, void 0);
else if ("length" in keyPath)
[].map.call(keyPath, function(kp) {
setByKeyPath(obj, kp, void 0);
});
}
function shallowClone(obj) {
var rv = {};
for (var m3 in obj) {
if (hasOwn(obj, m3))
rv[m3] = obj[m3];
}
return rv;
}
var concat = [].concat;
function flatten(a3) {
return concat.apply([], a3);
}
var intrinsicTypeNames = "Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey".split(",").concat(flatten([8, 16, 32, 64].map((num) => ["Int", "Uint", "Float"].map((t3) => t3 + num + "Array")))).filter((t3) => _global[t3]);
var intrinsicTypes = intrinsicTypeNames.map((t3) => _global[t3]);
arrayToObject(intrinsicTypeNames, (x4) => [x4, true]);
var circularRefs = null;
function deepClone(any) {
circularRefs = typeof WeakMap !== "undefined" && /* @__PURE__ */ new WeakMap();
const rv = innerDeepClone(any);
circularRefs = null;
return rv;
}
function innerDeepClone(any) {
if (!any || typeof any !== "object")
return any;
let rv = circularRefs && circularRefs.get(any);
if (rv)
return rv;
if (isArray(any)) {
rv = [];
circularRefs && circularRefs.set(any, rv);
for (var i4 = 0, l3 = any.length; i4 < l3; ++i4) {
rv.push(innerDeepClone(any[i4]));
}
} else if (intrinsicTypes.indexOf(any.constructor) >= 0) {
rv = any;
} else {
const proto = getProto(any);
rv = proto === Object.prototype ? {} : Object.create(proto);
circularRefs && circularRefs.set(any, rv);
for (var prop in any) {
if (hasOwn(any, prop)) {
rv[prop] = innerDeepClone(any[prop]);
}
}
}
return rv;
}
var { toString } = {};
function toStringTag(o3) {
return toString.call(o3).slice(8, -1);
}
var iteratorSymbol = typeof Symbol !== "undefined" ? Symbol.iterator : "@@iterator";
var getIteratorOf = typeof iteratorSymbol === "symbol" ? function(x4) {
var i4;
return x4 != null && (i4 = x4[iteratorSymbol]) && i4.apply(x4);
} : function() {
return null;
};
var NO_CHAR_ARRAY = {};
function getArrayOf(arrayLike) {
var i4, a3, x4, it;
if (arguments.length === 1) {
if (isArray(arrayLike))
return arrayLike.slice();
if (this === NO_CHAR_ARRAY && typeof arrayLike === "string")
return [arrayLike];
if (it = getIteratorOf(arrayLike)) {
a3 = [];
while (x4 = it.next(), !x4.done)
a3.push(x4.value);
return a3;
}
if (arrayLike == null)
return [arrayLike];
i4 = arrayLike.length;
if (typeof i4 === "number") {
a3 = new Array(i4);
while (i4--)
a3[i4] = arrayLike[i4];
return a3;
}
return [arrayLike];
}
i4 = arguments.length;
a3 = new Array(i4);
while (i4--)
a3[i4] = arguments[i4];
return a3;
}
var isAsyncFunction = typeof Symbol !== "undefined" ? (fn2) => fn2[Symbol.toStringTag] === "AsyncFunction" : () => false;
var debug = typeof location !== "undefined" && /^(http|https):\/\/(localhost|127\.0\.0\.1)/.test(location.href);
function setDebug(value, filter) {
debug = value;
libraryFilter = filter;
}
var libraryFilter = () => true;
var NEEDS_THROW_FOR_STACK = !new Error("").stack;
function getErrorWithStack() {
if (NEEDS_THROW_FOR_STACK)
try {
getErrorWithStack.arguments;
throw new Error();
} catch (e3) {
return e3;
}
return new Error();
}
function prettyStack(exception, numIgnoredFrames) {
var stack = exception.stack;
if (!stack)
return "";
numIgnoredFrames = numIgnoredFrames || 0;
if (stack.indexOf(exception.name) === 0)
numIgnoredFrames += (exception.name + exception.message).split("\n").length;
return stack.split("\n").slice(numIgnoredFrames).filter(libraryFilter).map((frame) => "\n" + frame).join("");
}
var dexieErrorNames = [
"Modify",
"Bulk",
"OpenFailed",
"VersionChange",
"Schema",
"Upgrade",
"InvalidTable",
"MissingAPI",
"NoSuchDatabase",
"InvalidArgument",
"SubTransaction",
"Unsupported",
"Internal",
"DatabaseClosed",
"PrematureCommit",
"ForeignAwait"
];
var idbDomErrorNames = [
"Unknown",
"Constraint",
"Data",
"TransactionInactive",
"ReadOnly",
"Version",
"NotFound",
"InvalidState",
"InvalidAccess",
"Abort",
"Timeout",
"QuotaExceeded",
"Syntax",
"DataClone"
];
var errorList = dexieErrorNames.concat(idbDomErrorNames);
var defaultTexts = {
VersionChanged: "Database version changed by other database connection",
DatabaseClosed: "Database has been closed",
Abort: "Transaction aborted",
TransactionInactive: "Transaction has already completed or failed",
MissingAPI: "IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb"
};
function DexieError(name, msg) {
this._e = getErrorWithStack();
this.name = name;
this.message = msg;
}
derive(DexieError).from(Error).extend({
stack: {
get: function() {
return this._stack || (this._stack = this.name + ": " + this.message + prettyStack(this._e, 2));
}
},
toString: function() {
return this.name + ": " + this.message;
}
});
function getMultiErrorMessage(msg, failures) {
return msg + ". Errors: " + Object.keys(failures).map((key) => failures[key].toString()).filter((v3, i4, s4) => s4.indexOf(v3) === i4).join("\n");
}
function ModifyError(msg, failures, successCount, failedKeys) {
this._e = getErrorWithStack();
this.failures = failures;
this.failedKeys = failedKeys;
this.successCount = successCount;
this.message = getMultiErrorMessage(msg, failures);
}
derive(ModifyError).from(DexieError);
function BulkError(msg, failures) {
this._e = getErrorWithStack();
this.name = "BulkError";
this.failures = Object.keys(failures).map((pos) => failures[pos]);
this.failuresByPos = failures;
this.message = getMultiErrorMessage(msg, failures);
}
derive(BulkError).from(DexieError);
var errnames = errorList.reduce((obj, name) => (obj[name] = name + "Error", obj), {});
var BaseException = DexieError;
var exceptions = errorList.reduce((obj, name) => {
var fullName = name + "Error";
function DexieError2(msgOrInner, inner) {
this._e = getErrorWithStack();
this.name = fullName;
if (!msgOrInner) {
this.message = defaultTexts[name] || fullName;
this.inner = null;
} else if (typeof msgOrInner === "string") {
this.message = `${msgOrInner}${!inner ? "" : "\n " + inner}`;
this.inner = inner || null;
} else if (typeof msgOrInner === "object") {
this.message = `${msgOrInner.name} ${msgOrInner.message}`;
this.inner = msgOrInner;
}
}
derive(DexieError2).from(BaseException);
obj[name] = DexieError2;
return obj;
}, {});
exceptions.Syntax = SyntaxError;
exceptions.Type = TypeError;
exceptions.Range = RangeError;
var exceptionMap = idbDomErrorNames.reduce((obj, name) => {
obj[name + "Error"] = exceptions[name];
return obj;
}, {});
function mapError(domError, message) {
if (!domError || domError instanceof DexieError || domError instanceof TypeError || domError instanceof SyntaxError || !domError.name || !exceptionMap[domError.name])
return domError;
var rv = new exceptionMap[domError.name](message || domError.message, domError);
if ("stack" in domError) {
setProp(rv, "stack", { get: function() {
return this.inner.stack;
} });
}
return rv;
}
var fullNameExceptions = errorList.reduce((obj, name) => {
if (["Syntax", "Type", "Range"].indexOf(name) === -1)
obj[name + "Error"] = exceptions[name];
return obj;
}, {});
fullNameExceptions.ModifyError = ModifyError;
fullNameExceptions.DexieError = DexieError;
fullNameExceptions.BulkError = BulkError;
function nop() {
}
function mirror(val) {
return val;
}
function pureFunctionChain(f1, f22) {
if (f1 == null || f1 === mirror)
return f22;
return function(val) {
return f22(f1(val));
};
}
function callBoth(on1, on2) {
return function() {
on1.apply(this, arguments);
on2.apply(this, arguments);
};
}
function hookCreatingChain(f1, f22) {
if (f1 === nop)
return f22;
return function() {
var res = f1.apply(this, arguments);
if (res !== void 0)
arguments[0] = res;
var onsuccess = this.onsuccess, onerror = this.onerror;
this.onsuccess = null;
this.onerror = null;
var res2 = f22.apply(this, arguments);
if (onsuccess)
this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;
if (onerror)
this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;
return res2 !== void 0 ? res2 : res;
};
}
function hookDeletingChain(f1, f22) {
if (f1 === nop)
return f22;
return function() {
f1.apply(this, arguments);
var onsuccess = this.onsuccess, onerror = this.onerror;
this.onsuccess = this.onerror = null;
f22.apply(this, arguments);
if (onsuccess)
this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;
if (onerror)
this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;
};
}
function hookUpdatingChain(f1, f22) {
if (f1 === nop)
return f22;
return function(modifications) {
var res = f1.apply(this, arguments);
extend(modifications, res);
var onsuccess = this.onsuccess, onerror = this.onerror;
this.onsuccess = null;
this.onerror = null;
var res2 = f22.apply(this, arguments);
if (onsuccess)
this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;
if (onerror)
this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;
return res === void 0 ? res2 === void 0 ? void 0 : res2 : extend(res, res2);
};
}
function reverseStoppableEventChain(f1, f22) {
if (f1 === nop)
return f22;
return function() {
if (f22.apply(this, arguments) === false)
return false;
return f1.apply(this, arguments);
};
}
function promisableChain(f1, f22) {
if (f1 === nop)
return f22;
return function() {
var res = f1.apply(this, arguments);
if (res && typeof res.then === "function") {
var thiz = this, i4 = arguments.length, args = new Array(i4);
while (i4--)
args[i4] = arguments[i4];
return res.then(function() {
return f22.apply(thiz, args);
});
}
return f22.apply(this, arguments);
};
}
var INTERNAL = {};
var LONG_STACKS_CLIP_LIMIT = 100;
var MAX_LONG_STACKS = 20;
var ZONE_ECHO_LIMIT = 100;
var [resolvedNativePromise, nativePromiseProto, resolvedGlobalPromise] = typeof Promise === "undefined" ? [] : (() => {
let globalP = Promise.resolve();
if (typeof crypto === "undefined" || !crypto.subtle)
return [globalP, getProto(globalP), globalP];
const nativeP = crypto.subtle.digest("SHA-512", new Uint8Array([0]));
return [
nativeP,
getProto(nativeP),
globalP
];
})();
var nativePromiseThen = nativePromiseProto && nativePromiseProto.then;
var NativePromise = resolvedNativePromise && resolvedNativePromise.constructor;
var patchGlobalPromise = !!resolvedGlobalPromise;
var stack_being_generated = false;
var schedulePhysicalTick = resolvedGlobalPromise ? () => {
resolvedGlobalPromise.then(physicalTick);
} : _global.setImmediate ? setImmediate.bind(null, physicalTick) : _global.MutationObserver ? () => {
var hiddenDiv = document.createElement("div");
new MutationObserver(() => {
physicalTick();
hiddenDiv = null;
}).observe(hiddenDiv, { attributes: true });
hiddenDiv.setAttribute("i", "1");
} : () => {
setTimeout(physicalTick, 0);
};
var asap = function(callback, args) {
microtickQueue.push([callback, args]);
if (needsNewPhysicalTick) {
schedulePhysicalTick();
needsNewPhysicalTick = false;
}
};
var isOutsideMicroTick = true;
var needsNewPhysicalTick = true;
var unhandledErrors = [];
var rejectingErrors = [];
var currentFulfiller = null;
var rejectionMapper = mirror;
var globalPSD = {
id: "global",
global: true,
ref: 0,
unhandleds: [],
onunhandled: globalError,
pgp: false,
env: {},
finalize: function() {
this.unhandleds.forEach((uh) => {
try {
globalError(uh[0], uh[1]);
} catch (e3) {
}
});
}
};
var PSD = globalPSD;
var microtickQueue = [];
var numScheduledCalls = 0;
var tickFinalizers = [];
function DexiePromise(fn2) {
if (typeof this !== "object")
throw new TypeError("Promises must be constructed via new");
this._listeners = [];
this.onuncatched = nop;
this._lib = false;
var psd = this._PSD = PSD;
if (debug) {
this._stackHolder = getErrorWithStack();
this._prev = null;
this._numPrev = 0;
}
if (typeof fn2 !== "function") {
if (fn2 !== INTERNAL)
throw new TypeError("Not a function");
this._state = arguments[1];
this._value = arguments[2];
if (this._state === false)
handleRejection(this, this._value);
return;
}
this._state = null;
this._value = null;
++psd.ref;
executePromiseTask(this, fn2);
}
var thenProp = {
get: function() {
var psd = PSD, microTaskId = totalEchoes;
function then(onFulfilled, onRejected) {
var possibleAwait = !psd.global && (psd !== PSD || microTaskId !== totalEchoes);
const cleanup = possibleAwait && !decrementExpectedAwaits();
var rv = new DexiePromise((resolve, reject) => {
propagateToListener(this, new Listener(nativeAwaitCompatibleWrap(onFulfilled, psd, possibleAwait, cleanup), nativeAwaitCompatibleWrap(onRejected, psd, possibleAwait, cleanup), resolve, reject, psd));
});
debug && linkToPreviousPromise(rv, this);
return rv;
}
then.prototype = INTERNAL;
return then;
},
set: function(value) {
setProp(this, "then", value && value.prototype === INTERNAL ? thenProp : {
get: function() {
return value;
},
set: thenProp.set
});
}
};
props(DexiePromise.prototype, {
then: thenProp,
_then: function(onFulfilled, onRejected) {
propagateToListener(this, new Listener(null, null, onFulfilled, onRejected, PSD));
},
catch: function(onRejected) {
if (arguments.length === 1)
return this.then(null, onRejected);
var type2 = arguments[0], handler = arguments[1];
return typeof type2 === "function" ? this.then(null, (err) => err instanceof type2 ? handler(err) : PromiseReject(err)) : this.then(null, (err) => err && err.name === type2 ? handler(err) : PromiseReject(err));
},
finally: function(onFinally) {
return this.then((value) => {
onFinally();
return value;
}, (err) => {
onFinally();
return PromiseReject(err);
});
},
stack: {
get: function() {
if (this._stack)
return this._stack;
try {
stack_being_generated = true;
var stacks = getStack(this, [], MAX_LONG_STACKS);
var stack = stacks.join("\nFrom previous: ");
if (this._state !== null)
this._stack = stack;
return stack;
} finally {
stack_being_generated = false;
}
}
},
timeout: function(ms, msg) {
return ms < Infinity ? new DexiePromise((resolve, reject) => {
var handle = setTimeout(() => reject(new exceptions.Timeout(msg)), ms);
this.then(resolve, reject).finally(clearTimeout.bind(null, handle));
}) : this;
}
});
if (typeof Symbol !== "undefined" && Symbol.toStringTag)
setProp(DexiePromise.prototype, Symbol.toStringTag, "Dexie.Promise");
globalPSD.env = snapShot();
function Listener(onFulfilled, onRejected, resolve, reject, zone) {
this.onFulfilled = typeof onFulfilled === "function" ? onFulfilled : null;
this.onRejected = typeof onRejected === "function" ? onRejected : null;
this.resolve = resolve;
this.reject = reject;
this.psd = zone;
}
props(DexiePromise, {
all: function() {
var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);
return new DexiePromise(function(resolve, reject) {
if (values.length === 0)
resolve([]);
var remaining = values.length;
values.forEach((a3, i4) => DexiePromise.resolve(a3).then((x4) => {
values[i4] = x4;
if (!--remaining)
resolve(values);
}, reject));
});
},
resolve: (value) => {
if (value instanceof DexiePromise)
return value;
if (value && typeof value.then === "function")
return new DexiePromise((resolve, reject) => {
value.then(resolve, reject);
});
var rv = new DexiePromise(INTERNAL, true, value);
linkToPreviousPromise(rv, currentFulfiller);
return rv;
},
reject: PromiseReject,
race: function() {
var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);
return new DexiePromise((resolve, reject) => {
values.map((value) => DexiePromise.resolve(value).then(resolve, reject));
});
},
PSD: {
get: () => PSD,
set: (value) => PSD = value
},
totalEchoes: { get: () => totalEchoes },
newPSD: newScope,
usePSD,
scheduler: {
get: () => asap,
set: (value) => {
asap = value;
}
},
rejectionMapper: {
get: () => rejectionMapper,
set: (value) => {
rejectionMapper = value;
}
},
follow: (fn2, zoneProps) => {
return new DexiePromise((resolve, reject) => {
return newScope((resolve2, reject2) => {
var psd = PSD;
psd.unhandleds = [];
psd.onunhandled = reject2;
psd.finalize = callBoth(function() {
run_at_end_of_this_or_next_physical_tick(() => {
this.unhandleds.length === 0 ? resolve2() : reject2(this.unhandleds[0]);
});
}, psd.finalize);
fn2();
}, zoneProps, resolve, reject);
});
}
});
if (NativePromise) {
if (NativePromise.allSettled)
setProp(DexiePromise, "allSettled", function() {
const possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);
return new DexiePromise((resolve) => {
if (possiblePromises.length === 0)
resolve([]);
let remaining = possiblePromises.length;
const results = new Array(remaining);
possiblePromises.forEach((p3, i4) => DexiePromise.resolve(p3).then((value) => results[i4] = { status: "fulfilled", value }, (reason) => results[i4] = { status: "rejected", reason }).then(() => --remaining || resolve(results)));
});
});
if (NativePromise.any && typeof AggregateError !== "undefined")
setProp(DexiePromise, "any", function() {
const possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);
return new DexiePromise((resolve, reject) => {
if (possiblePromises.length === 0)
reject(new AggregateError([]));
let remaining = possiblePromises.length;
const failures = new Array(remaining);
possiblePromises.forEach((p3, i4) => DexiePromise.resolve(p3).then((value) => resolve(value), (failure) => {
failures[i4] = failure;
if (!--remaining)
reject(new AggregateError(failures));
}));
});
});
}
function executePromiseTask(promise, fn2) {
try {
fn2((value) => {
if (promise._state !== null)
return;
if (value === promise)
throw new TypeError("A promise cannot be resolved with itself.");
var shouldExecuteTick = promise._lib && beginMicroTickScope();
if (value && typeof value.then === "function") {
executePromiseTask(promise, (resolve, reject) => {
value instanceof DexiePromise ? value._then(resolve, reject) : value.then(resolve, reject);
});
} else {
promise._state = true;
promise._value = value;
propagateAllListeners(promise);
}
if (shouldExecuteTick)
endMicroTickScope();
}, handleRejection.bind(null, promise));
} catch (ex) {
handleRejection(promise, ex);
}
}
function handleRejection(promise, reason) {
rejectingErrors.push(reason);
if (promise._state !== null)
return;
var shouldExecuteTick = promise._lib && beginMicroTickScope();
reason = rejectionMapper(reason);
promise._state = false;
promise._value = reason;
debug && reason !== null && typeof reason === "object" && !reason._promise && tryCatch(() => {
var origProp = getPropertyDescriptor(reason, "stack");
reason._promise = promise;
setProp(reason, "stack", {
get: () => stack_being_generated ? origProp && (origProp.get ? origProp.get.apply(reason) : origProp.value) : promise.stack
});
});
addPossiblyUnhandledError(promise);
propagateAllListeners(promise);
if (shouldExecuteTick)
endMicroTickScope();
}
function propagateAllListeners(promise) {
var listeners = promise._listeners;
promise._listeners = [];
for (var i4 = 0, len = listeners.length; i4 < len; ++i4) {
propagateToListener(promise, listeners[i4]);
}
var psd = promise._PSD;
--psd.ref || psd.finalize();
if (numScheduledCalls === 0) {
++numScheduledCalls;
asap(() => {
if (--numScheduledCalls === 0)
finalizePhysicalTick();
}, []);
}
}
function propagateToListener(promise, listener) {
if (promise._state === null) {
promise._listeners.push(listener);
return;
}
var cb = promise._state ? listener.onFulfilled : listener.onRejected;
if (cb === null) {
return (promise._state ? listener.resolve : listener.reject)(promise._value);
}
++listener.psd.ref;
++numScheduledCalls;
asap(callListener, [cb, promise, listener]);
}
function callListener(cb, promise, listener) {
try {
currentFulfiller = promise;
var ret, value = promise._value;
if (promise._state) {
ret = cb(value);
} else {
if (rejectingErrors.length)
rejectingErrors = [];
ret = cb(value);
if (rejectingErrors.indexOf(value) === -1)
markErrorAsHandled(promise);
}
listener.resolve(ret);
} catch (e3) {
listener.reject(e3);
} finally {
currentFulfiller = null;
if (--numScheduledCalls === 0)
finalizePhysicalTick();
--listener.psd.ref || listener.psd.finalize();
}
}
function getStack(promise, stacks, limit) {
if (stacks.length === limit)
return stacks;
var stack = "";
if (promise._state === false) {
var failure = promise._value, errorName, message;
if (failure != null) {
errorName = failure.name || "Error";
message = failure.message || failure;
stack = prettyStack(failure, 0);
} else {
errorName = failure;
message = "";
}
stacks.push(errorName + (message ? ": " + message : "") + stack);
}
if (debug) {
stack = prettyStack(promise._stackHolder, 2);
if (stack && stacks.indexOf(stack) === -1)
stacks.push(stack);
if (promise._prev)
getStack(promise._prev, stacks, limit);
}
return stacks;
}
function linkToPreviousPromise(promise, prev) {
var numPrev = prev ? prev._numPrev + 1 : 0;
if (numPrev < LONG_STACKS_CLIP_LIMIT) {
promise._prev = prev;
promise._numPrev = numPrev;
}
}
function physicalTick() {
beginMicroTickScope() && endMicroTickScope();
}
function beginMicroTickScope() {
var wasRootExec = isOutsideMicroTick;
isOutsideMicroTick = false;
needsNewPhysicalTick = false;
return wasRootExec;
}
function endMicroTickScope() {
var callbacks, i4, l3;
do {
while (microtickQueue.length > 0) {
callbacks = microtickQueue;
microtickQueue = [];
l3 = callbacks.length;
for (i4 = 0; i4 < l3; ++i4) {
var item = callbacks[i4];
item[0].apply(null, item[1]);
}
}
} while (microtickQueue.length > 0);
isOutsideMicroTick = true;
needsNewPhysicalTick = true;
}
function finalizePhysicalTick() {
var unhandledErrs = unhandledErrors;
unhandledErrors = [];
unhandledErrs.forEach((p3) => {
p3._PSD.onunhandled.call(null, p3._value, p3);
});
var finalizers = tickFinalizers.slice(0);
var i4 = finalizers.length;
while (i4)
finalizers[--i4]();
}
function run_at_end_of_this_or_next_physical_tick(fn2) {
function finalizer() {
fn2();
tickFinalizers.splice(tickFinalizers.indexOf(finalizer), 1);
}
tickFinalizers.push(finalizer);
++numScheduledCalls;
asap(() => {
if (--numScheduledCalls === 0)
finalizePhysicalTick();
}, []);
}
function addPossiblyUnhandledError(promise) {
if (!unhandledErrors.some((p3) => p3._value === promise._value))
unhandledErrors.push(promise);
}
function markErrorAsHandled(promise) {
var i4 = unhandledErrors.length;
while (i4)
if (unhandledErrors[--i4]._value === promise._value) {
unhandledErrors.splice(i4, 1);
return;
}
}
function PromiseReject(reason) {
return new DexiePromise(INTERNAL, false, reason);
}
function wrap(fn2, errorCatcher) {
var psd = PSD;
return function() {
var wasRootExec = beginMicroTickScope(), outerScope = PSD;
try {
switchToZone(psd, true);
return fn2.apply(this, arguments);
} catch (e3) {
errorCatcher && errorCatcher(e3);
} finally {
switchToZone(outerScope, false);
if (wasRootExec)
endMicroTickScope();
}
};
}
var task = { awaits: 0, echoes: 0, id: 0 };
var taskCounter = 0;
var zoneStack = [];
var zoneEchoes = 0;
var totalEchoes = 0;
var zone_id_counter = 0;
function newScope(fn2, props2, a1, a22) {
var parent = PSD, psd = Object.create(parent);
psd.parent = parent;
psd.ref = 0;
psd.global = false;
psd.id = ++zone_id_counter;
var globalEnv = globalPSD.env;
psd.env = patchGlobalPromise ? {
Promise: DexiePromise,
PromiseProp: { value: DexiePromise, configurable: true, writable: true },
all: DexiePromise.all,
race: DexiePromise.race,
allSettled: DexiePromise.allSettled,
any: DexiePromise.any,
resolve: DexiePromise.resolve,
reject: DexiePromise.reject,
nthen: getPatchedPromiseThen(globalEnv.nthen, psd),
gthen: getPatchedPromiseThen(globalEnv.gthen, psd)
} : {};
if (props2)
extend(psd, props2);
++parent.ref;
psd.finalize = function() {
--this.parent.ref || this.parent.finalize();
};
var rv = usePSD(psd, fn2, a1, a22);
if (psd.ref === 0)
psd.finalize();
return rv;
}
function incrementExpectedAwaits() {
if (!task.id)
task.id = ++taskCounter;
++task.awaits;
task.echoes += ZONE_ECHO_LIMIT;
return task.id;
}
function decrementExpectedAwaits() {
if (!task.awaits)
return false;
if (--task.awaits === 0)
task.id = 0;
task.echoes = task.awaits * ZONE_ECHO_LIMIT;
return true;
}
if (("" + nativePromiseThen).indexOf("[native code]") === -1) {
incrementExpectedAwaits = decrementExpectedAwaits = nop;
}
function onPossibleParallellAsync(possiblePromise) {
if (task.echoes && possiblePromise && possiblePromise.constructor === NativePromise) {
incrementExpectedAwaits();
return possiblePromise.then((x4) => {
decrementExpectedAwaits();
return x4;
}, (e3) => {
decrementExpectedAwaits();
return rejection(e3);
});
}
return possiblePromise;
}
function zoneEnterEcho(targetZone) {
++totalEchoes;
if (!task.echoes || --task.echoes === 0) {
task.echoes = task.id = 0;
}
zoneStack.push(PSD);
switchToZone(targetZone, true);
}
function zoneLeaveEcho() {
var zone = zoneStack[zoneStack.length - 1];
zoneStack.pop();
switchToZone(zone, false);
}
function switchToZone(targetZone, bEnteringZone) {
var currentZone = PSD;
if (bEnteringZone ? task.echoes && (!zoneEchoes++ || targetZone !== PSD) : zoneEchoes && (!--zoneEchoes || targetZone !== PSD)) {
enqueueNativeMicroTask(bEnteringZone ? zoneEnterEcho.bind(null, targetZone) : zoneLeaveEcho);
}
if (targetZone === PSD)
return;
PSD = targetZone;
if (currentZone === globalPSD)
globalPSD.env = snapShot();
if (patchGlobalPromise) {
var GlobalPromise = globalPSD.env.Promise;
var targetEnv = targetZone.env;
nativePromiseProto.then = targetEnv.nthen;
GlobalPromise.prototype.then = targetEnv.gthen;
if (currentZone.global || targetZone.global) {
Object.defineProperty(_global, "Promise", targetEnv.PromiseProp);
GlobalPromise.all = targetEnv.all;
GlobalPromise.race = targetEnv.race;
GlobalPromise.resolve = targetEnv.resolve;
GlobalPromise.reject = targetEnv.reject;
if (targetEnv.allSettled)
GlobalPromise.allSettled = targetEnv.allSettled;
if (targetEnv.any)
GlobalPromise.any = targetEnv.any;
}
}
}
function snapShot() {
var GlobalPromise = _global.Promise;
return patchGlobalPromise ? {
Promise: GlobalPromise,
PromiseProp: Object.getOwnPropertyDescriptor(_global, "Promise"),
all: GlobalPromise.all,
race: GlobalPromise.race,
allSettled: GlobalPromise.allSettled,
any: GlobalPromise.any,
resolve: GlobalPromise.resolve,
reject: GlobalPromise.reject,
nthen: nativePromiseProto.then,
gthen: GlobalPromise.prototype.then
} : {};
}
function usePSD(psd, fn2, a1, a22, a3) {
var outerScope = PSD;
try {
switchToZone(psd, true);
return fn2(a1, a22, a3);
} finally {
switchToZone(outerScope, false);
}
}
function enqueueNativeMicroTask(job) {
nativePromiseThen.call(resolvedNativePromise, job);
}
function nativeAwaitCompatibleWrap(fn2, zone, possibleAwait, cleanup) {
return typeof fn2 !== "function" ? fn2 : function() {
var outerZone = PSD;
if (possibleAwait)
incrementExpectedAwaits();
switchToZone(zone, true);
try {
return fn2.apply(this, arguments);
} finally {
switchToZone(outerZone, false);
if (cleanup)
enqueueNativeMicroTask(decrementExpectedAwaits);
}
};
}
function getPatchedPromiseThen(origThen, zone) {
return function(onResolved, onRejected) {
return origThen.call(this, nativeAwaitCompatibleWrap(onResolved, zone), nativeAwaitCompatibleWrap(onRejected, zone));
};
}
var UNHANDLEDREJECTION = "unhandledrejection";
function globalError(err, promise) {
var rv;
try {
rv = promise.onuncatched(err);
} catch (e3) {
}
if (rv !== false)
try {
var event, eventData = { promise, reason: err };
if (_global.document && document.createEvent) {
event = document.createEvent("Event");
event.initEvent(UNHANDLEDREJECTION, true, true);
extend(event, eventData);
} else if (_global.CustomEvent) {
event = new CustomEvent(UNHANDLEDREJECTION, { detail: eventData });
extend(event, eventData);
}
if (event && _global.dispatchEvent) {
dispatchEvent(event);
if (!_global.PromiseRejectionEvent && _global.onunhandledrejection)
try {
_global.onunhandledrejection(event);
} catch (_3) {
}
}
if (debug && event && !event.defaultPrevented) {
console.warn(`Unhandled rejection: ${err.stack || err}`);
}
} catch (e3) {
}
}
var rejection = DexiePromise.reject;
function tempTransaction(db, mode, storeNames, fn2) {
if (!db.idbdb || !db._state.openComplete && (!PSD.letThrough && !db._vip)) {
if (db._state.openComplete) {
return rejection(new exceptions.DatabaseClosed(db._state.dbOpenError));
}
if (!db._state.isBeingOpened) {
if (!db._options.autoOpen)
return rejection(new exceptions.DatabaseClosed());
db.open().catch(nop);
}
return db._state.dbReadyPromise.then(() => tempTransaction(db, mode, storeNames, fn2));
} else {
var trans = db._createTransaction(mode, storeNames, db._dbSchema);
try {
trans.create();
db._state.PR1398_maxLoop = 3;
} catch (ex) {
if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) {
console.warn("Dexie: Need to reopen db");
db._close();
return db.open().then(() => tempTransaction(db, mode, storeNames, fn2));
}
return rejection(ex);
}
return trans._promise(mode, (resolve, reject) => {
return newScope(() => {
PSD.trans = trans;
return fn2(resolve, reject, trans);
});
}).then((result) => {
return trans._completion.then(() => result);
});
}
}
var DEXIE_VERSION = "3.2.3";
var maxString = String.fromCharCode(65535);
var minKey = -Infinity;
var INVALID_KEY_ARGUMENT = "Invalid key provided. Keys must be of type string, number, Date or Array<string | number | Date>.";
var STRING_EXPECTED = "String expected.";
var connections = [];
var isIEOrEdge = typeof navigator !== "undefined" && /(MSIE|Trident|Edge)/.test(navigator.userAgent);
var hasIEDeleteObjectStoreBug = isIEOrEdge;
var hangsOnDeleteLargeKeyRange = isIEOrEdge;
var dexieStackFrameFilter = (frame) => !/(dexie\.js|dexie\.min\.js)/.test(frame);
var DBNAMES_DB = "__dbnames";
var READONLY = "readonly";
var READWRITE = "readwrite";
function combine(filter1, filter2) {
return filter1 ? filter2 ? function() {
return filter1.apply(this, arguments) && filter2.apply(this, arguments);
} : filter1 : filter2;
}
var AnyRange = {
type: 3,
lower: -Infinity,
lowerOpen: false,
upper: [[]],
upperOpen: false
};
function workaroundForUndefinedPrimKey(keyPath) {
return typeof keyPath === "string" && !/\./.test(keyPath) ? (obj) => {
if (obj[keyPath] === void 0 && keyPath in obj) {
obj = deepClone(obj);
delete obj[keyPath];
}
return obj;
} : (obj) => obj;
}
var Table = class {
_trans(mode, fn2, writeLocked) {
const trans = this._tx || PSD.trans;
const tableName = this.name;
function checkTableInTransaction(resolve, reject, trans2) {
if (!trans2.schema[tableName])
throw new exceptions.NotFound("Table " + tableName + " not part of transaction");
return fn2(trans2.idbtrans, trans2);
}
const wasRootExec = beginMicroTickScope();
try {
return trans && trans.db === this.db ? trans === PSD.trans ? trans._promise(mode, checkTableInTransaction, writeLocked) : newScope(() => trans._promise(mode, checkTableInTransaction, writeLocked), { trans, transless: PSD.transless || PSD }) : tempTransaction(this.db, mode, [this.name], checkTableInTransaction);
} finally {
if (wasRootExec)
endMicroTickScope();
}
}
get(keyOrCrit, cb) {
if (keyOrCrit && keyOrCrit.constructor === Object)
return this.where(keyOrCrit).first(cb);
return this._trans("readonly", (trans) => {
return this.core.get({ trans, key: keyOrCrit }).then((res) => this.hook.reading.fire(res));
}).then(cb);
}
where(indexOrCrit) {
if (typeof indexOrCrit === "string")
return new this.db.WhereClause(this, indexOrCrit);
if (isArray(indexOrCrit))
return new this.db.WhereClause(this, `[${indexOrCrit.join("+")}]`);
const keyPaths = keys(indexOrCrit);
if (keyPaths.length === 1)
return this.where(keyPaths[0]).equals(indexOrCrit[keyPaths[0]]);
const compoundIndex = this.schema.indexes.concat(this.schema.primKey).filter((ix) => ix.compound && keyPaths.every((keyPath) => ix.keyPath.indexOf(keyPath) >= 0) && ix.keyPath.every((keyPath) => keyPaths.indexOf(keyPath) >= 0))[0];
if (compoundIndex && this.db._maxKey !== maxString)
return this.where(compoundIndex.name).equals(compoundIndex.keyPath.map((kp) => indexOrCrit[kp]));
if (!compoundIndex && debug)
console.warn(`The query ${JSON.stringify(indexOrCrit)} on ${this.name} would benefit of a compound index [${keyPaths.join("+")}]`);
const { idxByName } = this.schema;
const idb = this.db._deps.indexedDB;
function equals(a3, b3) {
try {
return idb.cmp(a3, b3) === 0;
} catch (e3) {
return false;
}
}
const [idx, filterFunction] = keyPaths.reduce(([prevIndex, prevFilterFn], keyPath) => {
const index = idxByName[keyPath];
const value = indexOrCrit[keyPath];
return [
prevIndex || index,
prevIndex || !index ? combine(prevFilterFn, index && index.multi ? (x4) => {
const prop = getByKeyPath(x4, keyPath);
return isArray(prop) && prop.some((item) => equals(value, item));
} : (x4) => equals(value, getByKeyPath(x4, keyPath))) : prevFilterFn
];
}, [null, null]);
return idx ? this.where(idx.name).equals(indexOrCrit[idx.keyPath]).filter(filterFunction) : compoundIndex ? this.filter(filterFunction) : this.where(keyPaths).equals("");
}
filter(filterFunction) {
return this.toCollection().and(filterFunction);
}
count(thenShortcut) {
return this.toCollection().count(thenShortcut);
}
offset(offset) {
return this.toCollection().offset(offset);
}
limit(numRows) {
return this.toCollection().limit(numRows);
}
each(callback) {
return this.toCollection().each(callback);
}
toArray(thenShortcut) {
return this.toCollection().toArray(thenShortcut);
}
toCollection() {
return new this.db.Collection(new this.db.WhereClause(this));
}
orderBy(index) {
return new this.db.Collection(new this.db.WhereClause(this, isArray(index) ? `[${index.join("+")}]` : index));
}
reverse() {
return this.toCollection().reverse();
}
mapToClass(constructor) {
this.schema.mappedClass = constructor;
const readHook = (obj) => {
if (!obj)
return obj;
const res = Object.create(constructor.prototype);
for (var m3 in obj)
if (hasOwn(obj, m3))
try {
res[m3] = obj[m3];
} catch (_3) {
}
return res;
};
if (this.schema.readHook) {
this.hook.reading.unsubscribe(this.schema.readHook);
}
this.schema.readHook = readHook;
this.hook("reading", readHook);
return constructor;
}
defineClass() {
function Class(content) {
extend(this, content);
}
return this.mapToClass(Class);
}
add(obj, key) {
const { auto, keyPath } = this.schema.primKey;
let objToAdd = obj;
if (keyPath && auto) {
objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);
}
return this._trans("readwrite", (trans) => {
return this.core.mutate({ trans, type: "add", keys: key != null ? [key] : null, values: [objToAdd] });
}).then((res) => res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult).then((lastResult) => {
if (keyPath) {
try {
setByKeyPath(obj, keyPath, lastResult);
} catch (_3) {
}
}
return lastResult;
});
}
update(keyOrObject, modifications) {
if (typeof keyOrObject === "object" && !isArray(keyOrObject)) {
const key = getByKeyPath(keyOrObject, this.schema.primKey.keyPath);
if (key === void 0)
return rejection(new exceptions.InvalidArgument("Given object does not contain its primary key"));
try {
if (typeof modifications !== "function") {
keys(modifications).forEach((keyPath) => {
setByKeyPath(keyOrObject, keyPath, modifications[keyPath]);
});
} else {
modifications(keyOrObject, { value: keyOrObject, primKey: key });
}
} catch (_a) {
}
return this.where(":id").equals(key).modify(modifications);
} else {
return this.where(":id").equals(keyOrObject).modify(modifications);
}
}
put(obj, key) {
const { auto, keyPath } = this.schema.primKey;
let objToAdd = obj;
if (keyPath && auto) {
objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);
}
return this._trans("readwrite", (trans) => this.core.mutate({ trans, type: "put", values: [objToAdd], keys: key != null ? [key] : null })).then((res) => res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult).then((lastResult) => {
if (keyPath) {
try {
setByKeyPath(obj, keyPath, lastResult);
} catch (_3) {
}
}
return lastResult;
});
}
delete(key) {
return this._trans("readwrite", (trans) => this.core.mutate({ trans, type: "delete", keys: [key] })).then((res) => res.numFailures ? DexiePromise.reject(res.failures[0]) : void 0);
}
clear() {
return this._trans("readwrite", (trans) => this.core.mutate({ trans, type: "deleteRange", range: AnyRange })).then((res) => res.numFailures ? DexiePromise.reject(res.failures[0]) : void 0);
}
bulkGet(keys2) {
return this._trans("readonly", (trans) => {
return this.core.getMany({
keys: keys2,
trans
}).then((result) => result.map((res) => this.hook.reading.fire(res)));
});
}
bulkAdd(objects, keysOrOptions, options) {
const keys2 = Array.isArray(keysOrOptions) ? keysOrOptions : void 0;
options = options || (keys2 ? void 0 : keysOrOptions);
const wantResults = options ? options.allKeys : void 0;
return this._trans("readwrite", (trans) => {
const { auto, keyPath } = this.schema.primKey;
if (keyPath && keys2)
throw new exceptions.InvalidArgument("bulkAdd(): keys argument invalid on tables with inbound keys");
if (keys2 && keys2.length !== objects.length)
throw new exceptions.InvalidArgument("Arguments objects and keys must have the same length");
const numObjects = objects.length;
let objectsToAdd = keyPath && auto ? objects.map(workaroundForUndefinedPrimKey(keyPath)) : objects;
return this.core.mutate({ trans, type: "add", keys: keys2, values: objectsToAdd, wantResults }).then(({ numFailures, results, lastResult, failures }) => {
const result = wantResults ? results : lastResult;
if (numFailures === 0)
return result;
throw new BulkError(`${this.name}.bulkAdd(): ${numFailures} of ${numObjects} operations failed`, failures);
});
});
}
bulkPut(objects, keysOrOptions, options) {
const keys2 = Array.isArray(keysOrOptions) ? keysOrOptions : void 0;
options = options || (keys2 ? void 0 : keysOrOptions);
const wantResults = options ? options.allKeys : void 0;
return this._trans("readwrite", (trans) => {
const { auto, keyPath } = this.schema.primKey;
if (keyPath && keys2)
throw new exceptions.InvalidArgument("bulkPut(): keys argument invalid on tables with inbound keys");
if (keys2 && keys2.length !== objects.length)
throw new exceptions.InvalidArgument("Arguments objects and keys must have the same length");
const numObjects = objects.length;
let objectsToPut = keyPath && auto ? objects.map(workaroundForUndefinedPrimKey(keyPath)) : objects;
return this.core.mutate({ trans, type: "put", keys: keys2, values: objectsToPut, wantResults }).then(({ numFailures, results, lastResult, failures }) => {
const result = wantResults ? results : lastResult;
if (numFailures === 0)
return result;
throw new BulkError(`${this.name}.bulkPut(): ${numFailures} of ${numObjects} operations failed`, failures);
});
});
}
bulkDelete(keys2) {
const numKeys = keys2.length;
return this._trans("readwrite", (trans) => {
return this.core.mutate({ trans, type: "delete", keys: keys2 });
}).then(({ numFailures, lastResult, failures }) => {
if (numFailures === 0)
return lastResult;
throw new BulkError(`${this.name}.bulkDelete(): ${numFailures} of ${numKeys} operations failed`, failures);
});
}
};
function Events(ctx) {
var evs = {};
var rv = function(eventName, subscriber) {
if (subscriber) {
var i5 = arguments.length, args = new Array(i5 - 1);
while (--i5)
args[i5 - 1] = arguments[i5];
evs[eventName].subscribe.apply(null, args);
return ctx;
} else if (typeof eventName === "string") {
return evs[eventName];
}
};
rv.addEventType = add;
for (var i4 = 1, l3 = arguments.length; i4 < l3; ++i4) {
add(arguments[i4]);
}
return rv;
function add(eventName, chainFunction, defaultFunction) {
if (typeof eventName === "object")
return addConfiguredEvents(eventName);
if (!chainFunction)
chainFunction = reverseStoppableEventChain;
if (!defaultFunction)
defaultFunction = nop;
var context = {
subscribers: [],
fire: defaultFunction,
subscribe: function(cb) {
if (context.subscribers.indexOf(cb) === -1) {
context.subscribers.push(cb);
context.fire = chainFunction(context.fire, cb);
}
},
unsubscribe: function(cb) {
context.subscribers = context.subscribers.filter(function(fn2) {
return fn2 !== cb;
});
context.fire = context.subscribers.reduce(chainFunction, defaultFunction);
}
};
evs[eventName] = rv[eventName] = context;
return context;
}
function addConfiguredEvents(cfg) {
keys(cfg).forEach(function(eventName) {
var args = cfg[eventName];
if (isArray(args)) {
add(eventName, cfg[eventName][0], cfg[eventName][1]);
} else if (args === "asap") {
var context = add(eventName, mirror, function fire() {
var i5 = arguments.length, args2 = new Array(i5);
while (i5--)
args2[i5] = arguments[i5];
context.subscribers.forEach(function(fn2) {
asap$1(function fireEvent() {
fn2.apply(null, args2);
});
});
});
} else
throw new exceptions.InvalidArgument("Invalid event config");
});
}
}
function makeClassConstructor(prototype, constructor) {
derive(constructor).from({ prototype });
return constructor;
}
function createTableConstructor(db) {
return makeClassConstructor(Table.prototype, function Table2(name, tableSchema, trans) {
this.db = db;
this._tx = trans;
this.name = name;
this.schema = tableSchema;
this.hook = db._allTables[name] ? db._allTables[name].hook : Events(null, {
"creating": [hookCreatingChain, nop],
"reading": [pureFunctionChain, mirror],
"updating": [hookUpdatingChain, nop],
"deleting": [hookDeletingChain, nop]
});
});
}
function isPlainKeyRange(ctx, ignoreLimitFilter) {
return !(ctx.filter || ctx.algorithm || ctx.or) && (ignoreLimitFilter ? ctx.justLimit : !ctx.replayFilter);
}
function addFilter(ctx, fn2) {
ctx.filter = combine(ctx.filter, fn2);
}
function addReplayFilter(ctx, factory, isLimitFilter) {
var curr = ctx.replayFilter;
ctx.replayFilter = curr ? () => combine(curr(), factory()) : factory;
ctx.justLimit = isLimitFilter && !curr;
}
function addMatchFilter(ctx, fn2) {
ctx.isMatch = combine(ctx.isMatch, fn2);
}
function getIndexOrStore(ctx, coreSchema) {
if (ctx.isPrimKey)
return coreSchema.primaryKey;
const index = coreSchema.getIndexByKeyPath(ctx.index);
if (!index)
throw new exceptions.Schema("KeyPath " + ctx.index + " on object store " + coreSchema.name + " is not indexed");
return index;
}
function openCursor(ctx, coreTable, trans) {
const index = getIndexOrStore(ctx, coreTable.schema);
return coreTable.openCursor({
trans,
values: !ctx.keysOnly,
reverse: ctx.dir === "prev",
unique: !!ctx.unique,
query: {
index,
range: ctx.range
}
});
}
function iter(ctx, fn2, coreTrans, coreTable) {
const filter = ctx.replayFilter ? combine(ctx.filter, ctx.replayFilter()) : ctx.filter;
if (!ctx.or) {
return iterate(openCursor(ctx, coreTable, coreTrans), combine(ctx.algorithm, filter), fn2, !ctx.keysOnly && ctx.valueMapper);
} else {
const set = {};
const union = (item, cursor, advance) => {
if (!filter || filter(cursor, advance, (result) => cursor.stop(result), (err) => cursor.fail(err))) {
var primaryKey = cursor.primaryKey;
var key = "" + primaryKey;
if (key === "[object ArrayBuffer]")
key = "" + new Uint8Array(primaryKey);
if (!hasOwn(set, key)) {
set[key] = true;
fn2(item, cursor, advance);
}
}
};
return Promise.all([
ctx.or._iterate(union, coreTrans),
iterate(openCursor(ctx, coreTable, coreTrans), ctx.algorithm, union, !ctx.keysOnly && ctx.valueMapper)
]);
}
}
function iterate(cursorPromise, filter, fn2, valueMapper) {
var mappedFn = valueMapper ? (x4, c4, a3) => fn2(valueMapper(x4), c4, a3) : fn2;
var wrappedFn = wrap(mappedFn);
return cursorPromise.then((cursor) => {
if (cursor) {
return cursor.start(() => {
var c4 = () => cursor.continue();
if (!filter || filter(cursor, (advancer) => c4 = advancer, (val) => {
cursor.stop(val);
c4 = nop;
}, (e3) => {
cursor.fail(e3);
c4 = nop;
}))
wrappedFn(cursor.value, cursor, (advancer) => c4 = advancer);
c4();
});
}
});
}
function cmp(a3, b3) {
try {
const ta = type(a3);
const tb = type(b3);
if (ta !== tb) {
if (ta === "Array")
return 1;
if (tb === "Array")
return -1;
if (ta === "binary")
return 1;
if (tb === "binary")
return -1;
if (ta === "string")
return 1;
if (tb === "string")
return -1;
if (ta === "Date")
return 1;
if (tb !== "Date")
return NaN;
return -1;
}
switch (ta) {
case "number":
case "Date":
case "string":
return a3 > b3 ? 1 : a3 < b3 ? -1 : 0;
case "binary": {
return compareUint8Arrays(getUint8Array(a3), getUint8Array(b3));
}
case "Array":
return compareArrays(a3, b3);
}
} catch (_a) {
}
return NaN;
}
function compareArrays(a3, b3) {
const al = a3.length;
const bl = b3.length;
const l3 = al < bl ? al : bl;
for (let i4 = 0; i4 < l3; ++i4) {
const res = cmp(a3[i4], b3[i4]);
if (res !== 0)
return res;
}
return al === bl ? 0 : al < bl ? -1 : 1;
}
function compareUint8Arrays(a3, b3) {
const al = a3.length;
const bl = b3.length;
const l3 = al < bl ? al : bl;
for (let i4 = 0; i4 < l3; ++i4) {
if (a3[i4] !== b3[i4])
return a3[i4] < b3[i4] ? -1 : 1;
}
return al === bl ? 0 : al < bl ? -1 : 1;
}
function type(x4) {
const t3 = typeof x4;
if (t3 !== "object")
return t3;
if (ArrayBuffer.isView(x4))
return "binary";
const tsTag = toStringTag(x4);
return tsTag === "ArrayBuffer" ? "binary" : tsTag;
}
function getUint8Array(a3) {
if (a3 instanceof Uint8Array)
return a3;
if (ArrayBuffer.isView(a3))
return new Uint8Array(a3.buffer, a3.byteOffset, a3.byteLength);
return new Uint8Array(a3);
}
var Collection = class {
_read(fn2, cb) {
var ctx = this._ctx;
return ctx.error ? ctx.table._trans(null, rejection.bind(null, ctx.error)) : ctx.table._trans("readonly", fn2).then(cb);
}
_write(fn2) {
var ctx = this._ctx;
return ctx.error ? ctx.table._trans(null, rejection.bind(null, ctx.error)) : ctx.table._trans("readwrite", fn2, "locked");
}
_addAlgorithm(fn2) {
var ctx = this._ctx;
ctx.algorithm = combine(ctx.algorithm, fn2);
}
_iterate(fn2, coreTrans) {
return iter(this._ctx, fn2, coreTrans, this._ctx.table.core);
}
clone(props2) {
var rv = Object.create(this.constructor.prototype), ctx = Object.create(this._ctx);
if (props2)
extend(ctx, props2);
rv._ctx = ctx;
return rv;
}
raw() {
this._ctx.valueMapper = null;
return this;
}
each(fn2) {
var ctx = this._ctx;
return this._read((trans) => iter(ctx, fn2, trans, ctx.table.core));
}
count(cb) {
return this._read((trans) => {
const ctx = this._ctx;
const coreTable = ctx.table.core;
if (isPlainKeyRange(ctx, true)) {
return coreTable.count({
trans,
query: {
index: getIndexOrStore(ctx, coreTable.schema),
range: ctx.range
}
}).then((count2) => Math.min(count2, ctx.limit));
} else {
var count = 0;
return iter(ctx, () => {
++count;
return false;
}, trans, coreTable).then(() => count);
}
}).then(cb);
}
sortBy(keyPath, cb) {
const parts = keyPath.split(".").reverse(), lastPart = parts[0], lastIndex = parts.length - 1;
function getval(obj, i4) {
if (i4)
return getval(obj[parts[i4]], i4 - 1);
return obj[lastPart];
}
var order = this._ctx.dir === "next" ? 1 : -1;
function sorter(a3, b3) {
var aVal = getval(a3, lastIndex), bVal = getval(b3, lastIndex);
return aVal < bVal ? -order : aVal > bVal ? order : 0;
}
return this.toArray(function(a3) {
return a3.sort(sorter);
}).then(cb);
}
toArray(cb) {
return this._read((trans) => {
var ctx = this._ctx;
if (ctx.dir === "next" && isPlainKeyRange(ctx, true) && ctx.limit > 0) {
const { valueMapper } = ctx;
const index = getIndexOrStore(ctx, ctx.table.core.schema);
return ctx.table.core.query({
trans,
limit: ctx.limit,
values: true,
query: {
index,
range: ctx.range
}
}).then(({ result }) => valueMapper ? result.map(valueMapper) : result);
} else {
const a3 = [];
return iter(ctx, (item) => a3.push(item), trans, ctx.table.core).then(() => a3);
}
}, cb);
}
offset(offset) {
var ctx = this._ctx;
if (offset <= 0)
return this;
ctx.offset += offset;
if (isPlainKeyRange(ctx)) {
addReplayFilter(ctx, () => {
var offsetLeft = offset;
return (cursor, advance) => {
if (offsetLeft === 0)
return true;
if (offsetLeft === 1) {
--offsetLeft;
return false;
}
advance(() => {
cursor.advance(offsetLeft);
offsetLeft = 0;
});
return false;
};
});
} else {
addReplayFilter(ctx, () => {
var offsetLeft = offset;
return () => --offsetLeft < 0;
});
}
return this;
}
limit(numRows) {
this._ctx.limit = Math.min(this._ctx.limit, numRows);
addReplayFilter(this._ctx, () => {
var rowsLeft = numRows;
return function(cursor, advance, resolve) {
if (--rowsLeft <= 0)
advance(resolve);
return rowsLeft >= 0;
};
}, true);
return this;
}
until(filterFunction, bIncludeStopEntry) {
addFilter(this._ctx, function(cursor, advance, resolve) {
if (filterFunction(cursor.value)) {
advance(resolve);
return bIncludeStopEntry;
} else {
return true;
}
});
return this;
}
first(cb) {
return this.limit(1).toArray(function(a3) {
return a3[0];
}).then(cb);
}
last(cb) {
return this.reverse().first(cb);
}
filter(filterFunction) {
addFilter(this._ctx, function(cursor) {
return filterFunction(cursor.value);
});
addMatchFilter(this._ctx, filterFunction);
return this;
}
and(filter) {
return this.filter(filter);
}
or(indexName) {
return new this.db.WhereClause(this._ctx.table, indexName, this);
}
reverse() {
this._ctx.dir = this._ctx.dir === "prev" ? "next" : "prev";
if (this._ondirectionchange)
this._ondirectionchange(this._ctx.dir);
return this;
}
desc() {
return this.reverse();
}
eachKey(cb) {
var ctx = this._ctx;
ctx.keysOnly = !ctx.isMatch;
return this.each(function(val, cursor) {
cb(cursor.key, cursor);
});
}
eachUniqueKey(cb) {
this._ctx.unique = "unique";
return this.eachKey(cb);
}
eachPrimaryKey(cb) {
var ctx = this._ctx;
ctx.keysOnly = !ctx.isMatch;
return this.each(function(val, cursor) {
cb(cursor.primaryKey, cursor);
});
}
keys(cb) {
var ctx = this._ctx;
ctx.keysOnly = !ctx.isMatch;
var a3 = [];
return this.each(function(item, cursor) {
a3.push(cursor.key);
}).then(function() {
return a3;
}).then(cb);
}
primaryKeys(cb) {
var ctx = this._ctx;
if (ctx.dir === "next" && isPlainKeyRange(ctx, true) && ctx.limit > 0) {
return this._read((trans) => {
var index = getIndexOrStore(ctx, ctx.table.core.schema);
return ctx.table.core.query({
trans,
values: false,
limit: ctx.limit,
query: {
index,
range: ctx.range
}
});
}).then(({ result }) => result).then(cb);
}
ctx.keysOnly = !ctx.isMatch;
var a3 = [];
return this.each(function(item, cursor) {
a3.push(cursor.primaryKey);
}).then(function() {
return a3;
}).then(cb);
}
uniqueKeys(cb) {
this._ctx.unique = "unique";
return this.keys(cb);
}
firstKey(cb) {
return this.limit(1).keys(function(a3) {
return a3[0];
}).then(cb);
}
lastKey(cb) {
return this.reverse().firstKey(cb);
}
distinct() {
var ctx = this._ctx, idx = ctx.index && ctx.table.schema.idxByName[ctx.index];
if (!idx || !idx.multi)
return this;
var set = {};
addFilter(this._ctx, function(cursor) {
var strKey = cursor.primaryKey.toString();
var found = hasOwn(set, strKey);
set[strKey] = true;
return !found;
});
return this;
}
modify(changes) {
var ctx = this._ctx;
return this._write((trans) => {
var modifyer;
if (typeof changes === "function") {
modifyer = changes;
} else {
var keyPaths = keys(changes);
var numKeys = keyPaths.length;
modifyer = function(item) {
var anythingModified = false;
for (var i4 = 0; i4 < numKeys; ++i4) {
var keyPath = keyPaths[i4], val = changes[keyPath];
if (getByKeyPath(item, keyPath) !== val) {
setByKeyPath(item, keyPath, val);
anythingModified = true;
}
}
return anythingModified;
};
}
const coreTable = ctx.table.core;
const { outbound, extractKey } = coreTable.schema.primaryKey;
const limit = this.db._options.modifyChunkSize || 200;
const totalFailures = [];
let successCount = 0;
const failedKeys = [];
const applyMutateResult = (expectedCount, res) => {
const { failures, numFailures } = res;
successCount += expectedCount - numFailures;
for (let pos of keys(failures)) {
totalFailures.push(failures[pos]);
}
};
return this.clone().primaryKeys().then((keys2) => {
const nextChunk = (offset) => {
const count = Math.min(limit, keys2.length - offset);
return coreTable.getMany({
trans,
keys: keys2.slice(offset, offset + count),
cache: "immutable"
}).then((values) => {
const addValues = [];
const putValues = [];
const putKeys = outbound ? [] : null;
const deleteKeys = [];
for (let i4 = 0; i4 < count; ++i4) {
const origValue = values[i4];
const ctx2 = {
value: deepClone(origValue),
primKey: keys2[offset + i4]
};
if (modifyer.call(ctx2, ctx2.value, ctx2) !== false) {
if (ctx2.value == null) {
deleteKeys.push(keys2[offset + i4]);
} else if (!outbound && cmp(extractKey(origValue), extractKey(ctx2.value)) !== 0) {
deleteKeys.push(keys2[offset + i4]);
addValues.push(ctx2.value);
} else {
putValues.push(ctx2.value);
if (outbound)
putKeys.push(keys2[offset + i4]);
}
}
}
const criteria = isPlainKeyRange(ctx) && ctx.limit === Infinity && (typeof changes !== "function" || changes === deleteCallback) && {
index: ctx.index,
range: ctx.range
};
return Promise.resolve(addValues.length > 0 && coreTable.mutate({ trans, type: "add", values: addValues }).then((res) => {
for (let pos in res.failures) {
deleteKeys.splice(parseInt(pos), 1);
}
applyMutateResult(addValues.length, res);
})).then(() => (putValues.length > 0 || criteria && typeof changes === "object") && coreTable.mutate({
trans,
type: "put",
keys: putKeys,
values: putValues,
criteria,
changeSpec: typeof changes !== "function" && changes
}).then((res) => applyMutateResult(putValues.length, res))).then(() => (deleteKeys.length > 0 || criteria && changes === deleteCallback) && coreTable.mutate({
trans,
type: "delete",
keys: deleteKeys,
criteria
}).then((res) => applyMutateResult(deleteKeys.length, res))).then(() => {
return keys2.length > offset + count && nextChunk(offset + limit);
});
});
};
return nextChunk(0).then(() => {
if (totalFailures.length > 0)
throw new ModifyError("Error modifying one or more objects", totalFailures, successCount, failedKeys);
return keys2.length;
});
});
});
}
delete() {
var ctx = this._ctx, range = ctx.range;
if (isPlainKeyRange(ctx) && (ctx.isPrimKey && !hangsOnDeleteLargeKeyRange || range.type === 3)) {
return this._write((trans) => {
const { primaryKey } = ctx.table.core.schema;
const coreRange = range;
return ctx.table.core.count({ trans, query: { index: primaryKey, range: coreRange } }).then((count) => {
return ctx.table.core.mutate({ trans, type: "deleteRange", range: coreRange }).then(({ failures, lastResult, results, numFailures }) => {
if (numFailures)
throw new ModifyError("Could not delete some values", Object.keys(failures).map((pos) => failures[pos]), count - numFailures);
return count - numFailures;
});
});
});
}
return this.modify(deleteCallback);
}
};
var deleteCallback = (value, ctx) => ctx.value = null;
function createCollectionConstructor(db) {
return makeClassConstructor(Collection.prototype, function Collection2(whereClause, keyRangeGenerator) {
this.db = db;
let keyRange = AnyRange, error = null;
if (keyRangeGenerator)
try {
keyRange = keyRangeGenerator();
} catch (ex) {
error = ex;
}
const whereCtx = whereClause._ctx;
const table = whereCtx.table;
const readingHook = table.hook.reading.fire;
this._ctx = {
table,
index: whereCtx.index,
isPrimKey: !whereCtx.index || table.schema.primKey.keyPath && whereCtx.index === table.schema.primKey.name,
range: keyRange,
keysOnly: false,
dir: "next",
unique: "",
algorithm: null,
filter: null,
replayFilter: null,
justLimit: true,
isMatch: null,
offset: 0,
limit: Infinity,
error,
or: whereCtx.or,
valueMapper: readingHook !== mirror ? readingHook : null
};
});
}
function simpleCompare(a3, b3) {
return a3 < b3 ? -1 : a3 === b3 ? 0 : 1;
}
function simpleCompareReverse(a3, b3) {
return a3 > b3 ? -1 : a3 === b3 ? 0 : 1;
}
function fail(collectionOrWhereClause, err, T4) {
var collection = collectionOrWhereClause instanceof WhereClause ? new collectionOrWhereClause.Collection(collectionOrWhereClause) : collectionOrWhereClause;
collection._ctx.error = T4 ? new T4(err) : new TypeError(err);
return collection;
}
function emptyCollection(whereClause) {
return new whereClause.Collection(whereClause, () => rangeEqual("")).limit(0);
}
function upperFactory(dir) {
return dir === "next" ? (s4) => s4.toUpperCase() : (s4) => s4.toLowerCase();
}
function lowerFactory(dir) {
return dir === "next" ? (s4) => s4.toLowerCase() : (s4) => s4.toUpperCase();
}
function nextCasing(key, lowerKey, upperNeedle, lowerNeedle, cmp2, dir) {
var length = Math.min(key.length, lowerNeedle.length);
var llp = -1;
for (var i4 = 0; i4 < length; ++i4) {
var lwrKeyChar = lowerKey[i4];
if (lwrKeyChar !== lowerNeedle[i4]) {
if (cmp2(key[i4], upperNeedle[i4]) < 0)
return key.substr(0, i4) + upperNeedle[i4] + upperNeedle.substr(i4 + 1);
if (cmp2(key[i4], lowerNeedle[i4]) < 0)
return key.substr(0, i4) + lowerNeedle[i4] + upperNeedle.substr(i4 + 1);
if (llp >= 0)
return key.substr(0, llp) + lowerKey[llp] + upperNeedle.substr(llp + 1);
return null;
}
if (cmp2(key[i4], lwrKeyChar) < 0)
llp = i4;
}
if (length < lowerNeedle.length && dir === "next")
return key + upperNeedle.substr(key.length);
if (length < key.length && dir === "prev")
return key.substr(0, upperNeedle.length);
return llp < 0 ? null : key.substr(0, llp) + lowerNeedle[llp] + upperNeedle.substr(llp + 1);
}
function addIgnoreCaseAlgorithm(whereClause, match, needles, suffix) {
var upper, lower, compare, upperNeedles, lowerNeedles, direction, nextKeySuffix, needlesLen = needles.length;
if (!needles.every((s4) => typeof s4 === "string")) {
return fail(whereClause, STRING_EXPECTED);
}
function initDirection(dir) {
upper = upperFactory(dir);
lower = lowerFactory(dir);
compare = dir === "next" ? simpleCompare : simpleCompareReverse;
var needleBounds = needles.map(function(needle) {
return { lower: lower(needle), upper: upper(needle) };
}).sort(function(a3, b3) {
return compare(a3.lower, b3.lower);
});
upperNeedles = needleBounds.map(function(nb) {
return nb.upper;
});
lowerNeedles = needleBounds.map(function(nb) {
return nb.lower;
});
direction = dir;
nextKeySuffix = dir === "next" ? "" : suffix;
}
initDirection("next");
var c4 = new whereClause.Collection(whereClause, () => createRange(upperNeedles[0], lowerNeedles[needlesLen - 1] + suffix));
c4._ondirectionchange = function(direction2) {
initDirection(direction2);
};
var firstPossibleNeedle = 0;
c4._addAlgorithm(function(cursor, advance, resolve) {
var key = cursor.key;
if (typeof key !== "string")
return false;
var lowerKey = lower(key);
if (match(lowerKey, lowerNeedles, firstPossibleNeedle)) {
return true;
} else {
var lowestPossibleCasing = null;
for (var i4 = firstPossibleNeedle; i4 < needlesLen; ++i4) {
var casing = nextCasing(key, lowerKey, upperNeedles[i4], lowerNeedles[i4], compare, direction);
if (casing === null && lowestPossibleCasing === null)
firstPossibleNeedle = i4 + 1;
else if (lowestPossibleCasing === null || compare(lowestPossibleCasing, casing) > 0) {
lowestPossibleCasing = casing;
}
}
if (lowestPossibleCasing !== null) {
advance(function() {
cursor.continue(lowestPossibleCasing + nextKeySuffix);
});
} else {
advance(resolve);
}
return false;
}
});
return c4;
}
function createRange(lower, upper, lowerOpen, upperOpen) {
return {
type: 2,
lower,
upper,
lowerOpen,
upperOpen
};
}
function rangeEqual(value) {
return {
type: 1,
lower: value,
upper: value
};
}
var WhereClause = class {
get Collection() {
return this._ctx.table.db.Collection;
}
between(lower, upper, includeLower, includeUpper) {
includeLower = includeLower !== false;
includeUpper = includeUpper === true;
try {
if (this._cmp(lower, upper) > 0 || this._cmp(lower, upper) === 0 && (includeLower || includeUpper) && !(includeLower && includeUpper))
return emptyCollection(this);
return new this.Collection(this, () => createRange(lower, upper, !includeLower, !includeUpper));
} catch (e3) {
return fail(this, INVALID_KEY_ARGUMENT);
}
}
equals(value) {
if (value == null)
return fail(this, INVALID_KEY_ARGUMENT);
return new this.Collection(this, () => rangeEqual(value));
}
above(value) {
if (value == null)
return fail(this, INVALID_KEY_ARGUMENT);
return new this.Collection(this, () => createRange(value, void 0, true));
}
aboveOrEqual(value) {
if (value == null)
return fail(this, INVALID_KEY_ARGUMENT);
return new this.Collection(this, () => createRange(value, void 0, false));
}
below(value) {
if (value == null)
return fail(this, INVALID_KEY_ARGUMENT);
return new this.Collection(this, () => createRange(void 0, value, false, true));
}
belowOrEqual(value) {
if (value == null)
return fail(this, INVALID_KEY_ARGUMENT);
return new this.Collection(this, () => createRange(void 0, value));
}
startsWith(str) {
if (typeof str !== "string")
return fail(this, STRING_EXPECTED);
return this.between(str, str + maxString, true, true);
}
startsWithIgnoreCase(str) {
if (str === "")
return this.startsWith(str);
return addIgnoreCaseAlgorithm(this, (x4, a3) => x4.indexOf(a3[0]) === 0, [str], maxString);
}
equalsIgnoreCase(str) {
return addIgnoreCaseAlgorithm(this, (x4, a3) => x4 === a3[0], [str], "");
}
anyOfIgnoreCase() {
var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);
if (set.length === 0)
return emptyCollection(this);
return addIgnoreCaseAlgorithm(this, (x4, a3) => a3.indexOf(x4) !== -1, set, "");
}
startsWithAnyOfIgnoreCase() {
var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);
if (set.length === 0)
return emptyCollection(this);
return addIgnoreCaseAlgorithm(this, (x4, a3) => a3.some((n3) => x4.indexOf(n3) === 0), set, maxString);
}
anyOf() {
const set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);
let compare = this._cmp;
try {
set.sort(compare);
} catch (e3) {
return fail(this, INVALID_KEY_ARGUMENT);
}
if (set.length === 0)
return emptyCollection(this);
const c4 = new this.Collection(this, () => createRange(set[0], set[set.length - 1]));
c4._ondirectionchange = (direction) => {
compare = direction === "next" ? this._ascending : this._descending;
set.sort(compare);
};
let i4 = 0;
c4._addAlgorithm((cursor, advance, resolve) => {
const key = cursor.key;
while (compare(key, set[i4]) > 0) {
++i4;
if (i4 === set.length) {
advance(resolve);
return false;
}
}
if (compare(key, set[i4]) === 0) {
return true;
} else {
advance(() => {
cursor.continue(set[i4]);
});
return false;
}
});
return c4;
}
notEqual(value) {
return this.inAnyRange([[minKey, value], [value, this.db._maxKey]], { includeLowers: false, includeUppers: false });
}
noneOf() {
const set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);
if (set.length === 0)
return new this.Collection(this);
try {
set.sort(this._ascending);
} catch (e3) {
return fail(this, INVALID_KEY_ARGUMENT);
}
const ranges = set.reduce((res, val) => res ? res.concat([[res[res.length - 1][1], val]]) : [[minKey, val]], null);
ranges.push([set[set.length - 1], this.db._maxKey]);
return this.inAnyRange(ranges, { includeLowers: false, includeUppers: false });
}
inAnyRange(ranges, options) {
const cmp2 = this._cmp, ascending = this._ascending, descending = this._descending, min = this._min, max = this._max;
if (ranges.length === 0)
return emptyCollection(this);
if (!ranges.every((range) => range[0] !== void 0 && range[1] !== void 0 && ascending(range[0], range[1]) <= 0)) {
return fail(this, "First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower", exceptions.InvalidArgument);
}
const includeLowers = !options || options.includeLowers !== false;
const includeUppers = options && options.includeUppers === true;
function addRange2(ranges2, newRange) {
let i4 = 0, l3 = ranges2.length;
for (; i4 < l3; ++i4) {
const range = ranges2[i4];
if (cmp2(newRange[0], range[1]) < 0 && cmp2(newRange[1], range[0]) > 0) {
range[0] = min(range[0], newRange[0]);
range[1] = max(range[1], newRange[1]);
break;
}
}
if (i4 === l3)
ranges2.push(newRange);
return ranges2;
}
let sortDirection = ascending;
function rangeSorter(a3, b3) {
return sortDirection(a3[0], b3[0]);
}
let set;
try {
set = ranges.reduce(addRange2, []);
set.sort(rangeSorter);
} catch (ex) {
return fail(this, INVALID_KEY_ARGUMENT);
}
let rangePos = 0;
const keyIsBeyondCurrentEntry = includeUppers ? (key) => ascending(key, set[rangePos][1]) > 0 : (key) => ascending(key, set[rangePos][1]) >= 0;
const keyIsBeforeCurrentEntry = includeLowers ? (key) => descending(key, set[rangePos][0]) > 0 : (key) => descending(key, set[rangePos][0]) >= 0;
function keyWithinCurrentRange(key) {
return !keyIsBeyondCurrentEntry(key) && !keyIsBeforeCurrentEntry(key);
}
let checkKey = keyIsBeyondCurrentEntry;
const c4 = new this.Collection(this, () => createRange(set[0][0], set[set.length - 1][1], !includeLowers, !includeUppers));
c4._ondirectionchange = (direction) => {
if (direction === "next") {
checkKey = keyIsBeyondCurrentEntry;
sortDirection = ascending;
} else {
checkKey = keyIsBeforeCurrentEntry;
sortDirection = descending;
}
set.sort(rangeSorter);
};
c4._addAlgorithm((cursor, advance, resolve) => {
var key = cursor.key;
while (checkKey(key)) {
++rangePos;
if (rangePos === set.length) {
advance(resolve);
return false;
}
}
if (keyWithinCurrentRange(key)) {
return true;
} else if (this._cmp(key, set[rangePos][1]) === 0 || this._cmp(key, set[rangePos][0]) === 0) {
return false;
} else {
advance(() => {
if (sortDirection === ascending)
cursor.continue(set[rangePos][0]);
else
cursor.continue(set[rangePos][1]);
});
return false;
}
});
return c4;
}
startsWithAnyOf() {
const set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);
if (!set.every((s4) => typeof s4 === "string")) {
return fail(this, "startsWithAnyOf() only works with strings");
}
if (set.length === 0)
return emptyCollection(this);
return this.inAnyRange(set.map((str) => [str, str + maxString]));
}
};
function createWhereClauseConstructor(db) {
return makeClassConstructor(WhereClause.prototype, function WhereClause2(table, index, orCollection) {
this.db = db;
this._ctx = {
table,
index: index === ":id" ? null : index,
or: orCollection
};
const indexedDB2 = db._deps.indexedDB;
if (!indexedDB2)
throw new exceptions.MissingAPI();
this._cmp = this._ascending = indexedDB2.cmp.bind(indexedDB2);
this._descending = (a3, b3) => indexedDB2.cmp(b3, a3);
this._max = (a3, b3) => indexedDB2.cmp(a3, b3) > 0 ? a3 : b3;
this._min = (a3, b3) => indexedDB2.cmp(a3, b3) < 0 ? a3 : b3;
this._IDBKeyRange = db._deps.IDBKeyRange;
});
}
function eventRejectHandler(reject) {
return wrap(function(event) {
preventDefault(event);
reject(event.target.error);
return false;
});
}
function preventDefault(event) {
if (event.stopPropagation)
event.stopPropagation();
if (event.preventDefault)
event.preventDefault();
}
var DEXIE_STORAGE_MUTATED_EVENT_NAME = "storagemutated";
var STORAGE_MUTATED_DOM_EVENT_NAME = "x-storagemutated-1";
var globalEvents = Events(null, DEXIE_STORAGE_MUTATED_EVENT_NAME);
var Transaction = class {
_lock() {
assert(!PSD.global);
++this._reculock;
if (this._reculock === 1 && !PSD.global)
PSD.lockOwnerFor = this;
return this;
}
_unlock() {
assert(!PSD.global);
if (--this._reculock === 0) {
if (!PSD.global)
PSD.lockOwnerFor = null;
while (this._blockedFuncs.length > 0 && !this._locked()) {
var fnAndPSD = this._blockedFuncs.shift();
try {
usePSD(fnAndPSD[1], fnAndPSD[0]);
} catch (e3) {
}
}
}
return this;
}
_locked() {
return this._reculock && PSD.lockOwnerFor !== this;
}
create(idbtrans) {
if (!this.mode)
return this;
const idbdb = this.db.idbdb;
const dbOpenError = this.db._state.dbOpenError;
assert(!this.idbtrans);
if (!idbtrans && !idbdb) {
switch (dbOpenError && dbOpenError.name) {
case "DatabaseClosedError":
throw new exceptions.DatabaseClosed(dbOpenError);
case "MissingAPIError":
throw new exceptions.MissingAPI(dbOpenError.message, dbOpenError);
default:
throw new exceptions.OpenFailed(dbOpenError);
}
}
if (!this.active)
throw new exceptions.TransactionInactive();
assert(this._completion._state === null);
idbtrans = this.idbtrans = idbtrans || (this.db.core ? this.db.core.transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability }) : idbdb.transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability }));
idbtrans.onerror = wrap((ev) => {
preventDefault(ev);
this._reject(idbtrans.error);
});
idbtrans.onabort = wrap((ev) => {
preventDefault(ev);
this.active && this._reject(new exceptions.Abort(idbtrans.error));
this.active = false;
this.on("abort").fire(ev);
});
idbtrans.oncomplete = wrap(() => {
this.active = false;
this._resolve();
if ("mutatedParts" in idbtrans) {
globalEvents.storagemutated.fire(idbtrans["mutatedParts"]);
}
});
return this;
}
_promise(mode, fn2, bWriteLock) {
if (mode === "readwrite" && this.mode !== "readwrite")
return rejection(new exceptions.ReadOnly("Transaction is readonly"));
if (!this.active)
return rejection(new exceptions.TransactionInactive());
if (this._locked()) {
return new DexiePromise((resolve, reject) => {
this._blockedFuncs.push([() => {
this._promise(mode, fn2, bWriteLock).then(resolve, reject);
}, PSD]);
});
} else if (bWriteLock) {
return newScope(() => {
var p4 = new DexiePromise((resolve, reject) => {
this._lock();
const rv = fn2(resolve, reject, this);
if (rv && rv.then)
rv.then(resolve, reject);
});
p4.finally(() => this._unlock());
p4._lib = true;
return p4;
});
} else {
var p3 = new DexiePromise((resolve, reject) => {
var rv = fn2(resolve, reject, this);
if (rv && rv.then)
rv.then(resolve, reject);
});
p3._lib = true;
return p3;
}
}
_root() {
return this.parent ? this.parent._root() : this;
}
waitFor(promiseLike) {
var root = this._root();
const promise = DexiePromise.resolve(promiseLike);
if (root._waitingFor) {
root._waitingFor = root._waitingFor.then(() => promise);
} else {
root._waitingFor = promise;
root._waitingQueue = [];
var store = root.idbtrans.objectStore(root.storeNames[0]);
(function spin() {
++root._spinCount;
while (root._waitingQueue.length)
root._waitingQueue.shift()();
if (root._waitingFor)
store.get(-Infinity).onsuccess = spin;
})();
}
var currentWaitPromise = root._waitingFor;
return new DexiePromise((resolve, reject) => {
promise.then((res) => root._waitingQueue.push(wrap(resolve.bind(null, res))), (err) => root._waitingQueue.push(wrap(reject.bind(null, err)))).finally(() => {
if (root._waitingFor === currentWaitPromise) {
root._waitingFor = null;
}
});
});
}
abort() {
if (this.active) {
this.active = false;
if (this.idbtrans)
this.idbtrans.abort();
this._reject(new exceptions.Abort());
}
}
table(tableName) {
const memoizedTables = this._memoizedTables || (this._memoizedTables = {});
if (hasOwn(memoizedTables, tableName))
return memoizedTables[tableName];
const tableSchema = this.schema[tableName];
if (!tableSchema) {
throw new exceptions.NotFound("Table " + tableName + " not part of transaction");
}
const transactionBoundTable = new this.db.Table(tableName, tableSchema, this);
transactionBoundTable.core = this.db.core.table(tableName);
memoizedTables[tableName] = transactionBoundTable;
return transactionBoundTable;
}
};
function createTransactionConstructor(db) {
return makeClassConstructor(Transaction.prototype, function Transaction2(mode, storeNames, dbschema, chromeTransactionDurability, parent) {
this.db = db;
this.mode = mode;
this.storeNames = storeNames;
this.schema = dbschema;
this.chromeTransactionDurability = chromeTransactionDurability;
this.idbtrans = null;
this.on = Events(this, "complete", "error", "abort");
this.parent = parent || null;
this.active = true;
this._reculock = 0;
this._blockedFuncs = [];
this._resolve = null;
this._reject = null;
this._waitingFor = null;
this._waitingQueue = null;
this._spinCount = 0;
this._completion = new DexiePromise((resolve, reject) => {
this._resolve = resolve;
this._reject = reject;
});
this._completion.then(() => {
this.active = false;
this.on.complete.fire();
}, (e3) => {
var wasActive = this.active;
this.active = false;
this.on.error.fire(e3);
this.parent ? this.parent._reject(e3) : wasActive && this.idbtrans && this.idbtrans.abort();
return rejection(e3);
});
});
}
function createIndexSpec(name, keyPath, unique, multi, auto, compound, isPrimKey) {
return {
name,
keyPath,
unique,
multi,
auto,
compound,
src: (unique && !isPrimKey ? "&" : "") + (multi ? "*" : "") + (auto ? "++" : "") + nameFromKeyPath(keyPath)
};
}
function nameFromKeyPath(keyPath) {
return typeof keyPath === "string" ? keyPath : keyPath ? "[" + [].join.call(keyPath, "+") + "]" : "";
}
function createTableSchema(name, primKey, indexes) {
return {
name,
primKey,
indexes,
mappedClass: null,
idxByName: arrayToObject(indexes, (index) => [index.name, index])
};
}
function safariMultiStoreFix(storeNames) {
return storeNames.length === 1 ? storeNames[0] : storeNames;
}
var getMaxKey = (IdbKeyRange) => {
try {
IdbKeyRange.only([[]]);
getMaxKey = () => [[]];
return [[]];
} catch (e3) {
getMaxKey = () => maxString;
return maxString;
}
};
function getKeyExtractor(keyPath) {
if (keyPath == null) {
return () => void 0;
} else if (typeof keyPath === "string") {
return getSinglePathKeyExtractor(keyPath);
} else {
return (obj) => getByKeyPath(obj, keyPath);
}
}
function getSinglePathKeyExtractor(keyPath) {
const split = keyPath.split(".");
if (split.length === 1) {
return (obj) => obj[keyPath];
} else {
return (obj) => getByKeyPath(obj, keyPath);
}
}
function arrayify(arrayLike) {
return [].slice.call(arrayLike);
}
var _id_counter = 0;
function getKeyPathAlias(keyPath) {
return keyPath == null ? ":id" : typeof keyPath === "string" ? keyPath : `[${keyPath.join("+")}]`;
}
function createDBCore(db, IdbKeyRange, tmpTrans) {
function extractSchema(db2, trans) {
const tables2 = arrayify(db2.objectStoreNames);
return {
schema: {
name: db2.name,
tables: tables2.map((table) => trans.objectStore(table)).map((store) => {
const { keyPath, autoIncrement } = store;
const compound = isArray(keyPath);
const outbound = keyPath == null;
const indexByKeyPath = {};
const result = {
name: store.name,
primaryKey: {
name: null,
isPrimaryKey: true,
outbound,
compound,
keyPath,
autoIncrement,
unique: true,
extractKey: getKeyExtractor(keyPath)
},
indexes: arrayify(store.indexNames).map((indexName) => store.index(indexName)).map((index) => {
const { name, unique, multiEntry, keyPath: keyPath2 } = index;
const compound2 = isArray(keyPath2);
const result2 = {
name,
compound: compound2,
keyPath: keyPath2,
unique,
multiEntry,
extractKey: getKeyExtractor(keyPath2)
};
indexByKeyPath[getKeyPathAlias(keyPath2)] = result2;
return result2;
}),
getIndexByKeyPath: (keyPath2) => indexByKeyPath[getKeyPathAlias(keyPath2)]
};
indexByKeyPath[":id"] = result.primaryKey;
if (keyPath != null) {
indexByKeyPath[getKeyPathAlias(keyPath)] = result.primaryKey;
}
return result;
})
},
hasGetAll: tables2.length > 0 && "getAll" in trans.objectStore(tables2[0]) && !(typeof navigator !== "undefined" && /Safari/.test(navigator.userAgent) && !/(Chrome\/|Edge\/)/.test(navigator.userAgent) && [].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1] < 604)
};
}
function makeIDBKeyRange(range) {
if (range.type === 3)
return null;
if (range.type === 4)
throw new Error("Cannot convert never type to IDBKeyRange");
const { lower, upper, lowerOpen, upperOpen } = range;
const idbRange = lower === void 0 ? upper === void 0 ? null : IdbKeyRange.upperBound(upper, !!upperOpen) : upper === void 0 ? IdbKeyRange.lowerBound(lower, !!lowerOpen) : IdbKeyRange.bound(lower, upper, !!lowerOpen, !!upperOpen);
return idbRange;
}
function createDbCoreTable(tableSchema) {
const tableName = tableSchema.name;
function mutate({ trans, type: type2, keys: keys2, values, range }) {
return new Promise((resolve, reject) => {
resolve = wrap(resolve);
const store = trans.objectStore(tableName);
const outbound = store.keyPath == null;
const isAddOrPut = type2 === "put" || type2 === "add";
if (!isAddOrPut && type2 !== "delete" && type2 !== "deleteRange")
throw new Error("Invalid operation type: " + type2);
const { length } = keys2 || values || { length: 1 };
if (keys2 && values && keys2.length !== values.length) {
throw new Error("Given keys array must have same length as given values array.");
}
if (length === 0)
return resolve({ numFailures: 0, failures: {}, results: [], lastResult: void 0 });
let req;
const reqs = [];
const failures = [];
let numFailures = 0;
const errorHandler = (event) => {
++numFailures;
preventDefault(event);
};
if (type2 === "deleteRange") {
if (range.type === 4)
return resolve({ numFailures, failures, results: [], lastResult: void 0 });
if (range.type === 3)
reqs.push(req = store.clear());
else
reqs.push(req = store.delete(makeIDBKeyRange(range)));
} else {
const [args1, args2] = isAddOrPut ? outbound ? [values, keys2] : [values, null] : [keys2, null];
if (isAddOrPut) {
for (let i4 = 0; i4 < length; ++i4) {
reqs.push(req = args2 && args2[i4] !== void 0 ? store[type2](args1[i4], args2[i4]) : store[type2](args1[i4]));
req.onerror = errorHandler;
}
} else {
for (let i4 = 0; i4 < length; ++i4) {
reqs.push(req = store[type2](args1[i4]));
req.onerror = errorHandler;
}
}
}
const done = (event) => {
const lastResult = event.target.result;
reqs.forEach((req2, i4) => req2.error != null && (failures[i4] = req2.error));
resolve({
numFailures,
failures,
results: type2 === "delete" ? keys2 : reqs.map((req2) => req2.result),
lastResult
});
};
req.onerror = (event) => {
errorHandler(event);
done(event);
};
req.onsuccess = done;
});
}
function openCursor2({ trans, values, query: query2, reverse, unique }) {
return new Promise((resolve, reject) => {
resolve = wrap(resolve);
const { index, range } = query2;
const store = trans.objectStore(tableName);
const source = index.isPrimaryKey ? store : store.index(index.name);
const direction = reverse ? unique ? "prevunique" : "prev" : unique ? "nextunique" : "next";
const req = values || !("openKeyCursor" in source) ? source.openCursor(makeIDBKeyRange(range), direction) : source.openKeyCursor(makeIDBKeyRange(range), direction);
req.onerror = eventRejectHandler(reject);
req.onsuccess = wrap((ev) => {
const cursor = req.result;
if (!cursor) {
resolve(null);
return;
}
cursor.___id = ++_id_counter;
cursor.done = false;
const _cursorContinue = cursor.continue.bind(cursor);
let _cursorContinuePrimaryKey = cursor.continuePrimaryKey;
if (_cursorContinuePrimaryKey)
_cursorContinuePrimaryKey = _cursorContinuePrimaryKey.bind(cursor);
const _cursorAdvance = cursor.advance.bind(cursor);
const doThrowCursorIsNotStarted = () => {
throw new Error("Cursor not started");
};
const doThrowCursorIsStopped = () => {
throw new Error("Cursor not stopped");
};
cursor.trans = trans;
cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsNotStarted;
cursor.fail = wrap(reject);
cursor.next = function() {
let gotOne = 1;
return this.start(() => gotOne-- ? this.continue() : this.stop()).then(() => this);
};
cursor.start = (callback) => {
const iterationPromise = new Promise((resolveIteration, rejectIteration) => {
resolveIteration = wrap(resolveIteration);
req.onerror = eventRejectHandler(rejectIteration);
cursor.fail = rejectIteration;
cursor.stop = (value) => {
cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsStopped;
resolveIteration(value);
};
});
const guardedCallback = () => {
if (req.result) {
try {
callback();
} catch (err) {
cursor.fail(err);
}
} else {
cursor.done = true;
cursor.start = () => {
throw new Error("Cursor behind last entry");
};
cursor.stop();
}
};
req.onsuccess = wrap((ev2) => {
req.onsuccess = guardedCallback;
guardedCallback();
});
cursor.continue = _cursorContinue;
cursor.continuePrimaryKey = _cursorContinuePrimaryKey;
cursor.advance = _cursorAdvance;
guardedCallback();
return iterationPromise;
};
resolve(cursor);
}, reject);
});
}
function query(hasGetAll2) {
return (request) => {
return new Promise((resolve, reject) => {
resolve = wrap(resolve);
const { trans, values, limit, query: query2 } = request;
const nonInfinitLimit = limit === Infinity ? void 0 : limit;
const { index, range } = query2;
const store = trans.objectStore(tableName);
const source = index.isPrimaryKey ? store : store.index(index.name);
const idbKeyRange = makeIDBKeyRange(range);
if (limit === 0)
return resolve({ result: [] });
if (hasGetAll2) {
const req = values ? source.getAll(idbKeyRange, nonInfinitLimit) : source.getAllKeys(idbKeyRange, nonInfinitLimit);
req.onsuccess = (event) => resolve({ result: event.target.result });
req.onerror = eventRejectHandler(reject);
} else {
let count = 0;
const req = values || !("openKeyCursor" in source) ? source.openCursor(idbKeyRange) : source.openKeyCursor(idbKeyRange);
const result = [];
req.onsuccess = (event) => {
const cursor = req.result;
if (!cursor)
return resolve({ result });
result.push(values ? cursor.value : cursor.primaryKey);
if (++count === limit)
return resolve({ result });
cursor.continue();
};
req.onerror = eventRejectHandler(reject);
}
});
};
}
return {
name: tableName,
schema: tableSchema,
mutate,
getMany({ trans, keys: keys2 }) {
return new Promise((resolve, reject) => {
resolve = wrap(resolve);
const store = trans.objectStore(tableName);
const length = keys2.length;
const result = new Array(length);
let keyCount = 0;
let callbackCount = 0;
let req;
const successHandler = (event) => {
const req2 = event.target;
if ((result[req2._pos] = req2.result) != null)
;
if (++callbackCount === keyCount)
resolve(result);
};
const errorHandler = eventRejectHandler(reject);
for (let i4 = 0; i4 < length; ++i4) {
const key = keys2[i4];
if (key != null) {
req = store.get(keys2[i4]);
req._pos = i4;
req.onsuccess = successHandler;
req.onerror = errorHandler;
++keyCount;
}
}
if (keyCount === 0)
resolve(result);
});
},
get({ trans, key }) {
return new Promise((resolve, reject) => {
resolve = wrap(resolve);
const store = trans.objectStore(tableName);
const req = store.get(key);
req.onsuccess = (event) => resolve(event.target.result);
req.onerror = eventRejectHandler(reject);
});
},
query: query(hasGetAll),
openCursor: openCursor2,
count({ query: query2, trans }) {
const { index, range } = query2;
return new Promise((resolve, reject) => {
const store = trans.objectStore(tableName);
const source = index.isPrimaryKey ? store : store.index(index.name);
const idbKeyRange = makeIDBKeyRange(range);
const req = idbKeyRange ? source.count(idbKeyRange) : source.count();
req.onsuccess = wrap((ev) => resolve(ev.target.result));
req.onerror = eventRejectHandler(reject);
});
}
};
}
const { schema, hasGetAll } = extractSchema(db, tmpTrans);
const tables = schema.tables.map((tableSchema) => createDbCoreTable(tableSchema));
const tableMap = {};
tables.forEach((table) => tableMap[table.name] = table);
return {
stack: "dbcore",
transaction: db.transaction.bind(db),
table(name) {
const result = tableMap[name];
if (!result)
throw new Error(`Table '${name}' not found`);
return tableMap[name];
},
MIN_KEY: -Infinity,
MAX_KEY: getMaxKey(IdbKeyRange),
schema
};
}
function createMiddlewareStack(stackImpl, middlewares) {
return middlewares.reduce((down, { create }) => ({ ...down, ...create(down) }), stackImpl);
}
function createMiddlewareStacks(middlewares, idbdb, { IDBKeyRange, indexedDB: indexedDB2 }, tmpTrans) {
const dbcore = createMiddlewareStack(createDBCore(idbdb, IDBKeyRange, tmpTrans), middlewares.dbcore);
return {
dbcore
};
}
function generateMiddlewareStacks({ _novip: db }, tmpTrans) {
const idbdb = tmpTrans.db;
const stacks = createMiddlewareStacks(db._middlewares, idbdb, db._deps, tmpTrans);
db.core = stacks.dbcore;
db.tables.forEach((table) => {
const tableName = table.name;
if (db.core.schema.tables.some((tbl) => tbl.name === tableName)) {
table.core = db.core.table(tableName);
if (db[tableName] instanceof db.Table) {
db[tableName].core = table.core;
}
}
});
}
function setApiOnPlace({ _novip: db }, objs, tableNames, dbschema) {
tableNames.forEach((tableName) => {
const schema = dbschema[tableName];
objs.forEach((obj) => {
const propDesc = getPropertyDescriptor(obj, tableName);
if (!propDesc || "value" in propDesc && propDesc.value === void 0) {
if (obj === db.Transaction.prototype || obj instanceof db.Transaction) {
setProp(obj, tableName, {
get() {
return this.table(tableName);
},
set(value) {
defineProperty(this, tableName, { value, writable: true, configurable: true, enumerable: true });
}
});
} else {
obj[tableName] = new db.Table(tableName, schema);
}
}
});
});
}
function removeTablesApi({ _novip: db }, objs) {
objs.forEach((obj) => {
for (let key in obj) {
if (obj[key] instanceof db.Table)
delete obj[key];
}
});
}
function lowerVersionFirst(a3, b3) {
return a3._cfg.version - b3._cfg.version;
}
function runUpgraders(db, oldVersion, idbUpgradeTrans, reject) {
const globalSchema = db._dbSchema;
const trans = db._createTransaction("readwrite", db._storeNames, globalSchema);
trans.create(idbUpgradeTrans);
trans._completion.catch(reject);
const rejectTransaction = trans._reject.bind(trans);
const transless = PSD.transless || PSD;
newScope(() => {
PSD.trans = trans;
PSD.transless = transless;
if (oldVersion === 0) {
keys(globalSchema).forEach((tableName) => {
createTable(idbUpgradeTrans, tableName, globalSchema[tableName].primKey, globalSchema[tableName].indexes);
});
generateMiddlewareStacks(db, idbUpgradeTrans);
DexiePromise.follow(() => db.on.populate.fire(trans)).catch(rejectTransaction);
} else
updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans).catch(rejectTransaction);
});
}
function updateTablesAndIndexes({ _novip: db }, oldVersion, trans, idbUpgradeTrans) {
const queue = [];
const versions = db._versions;
let globalSchema = db._dbSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans);
let anyContentUpgraderHasRun = false;
const versToRun = versions.filter((v3) => v3._cfg.version >= oldVersion);
versToRun.forEach((version2) => {
queue.push(() => {
const oldSchema = globalSchema;
const newSchema = version2._cfg.dbschema;
adjustToExistingIndexNames(db, oldSchema, idbUpgradeTrans);
adjustToExistingIndexNames(db, newSchema, idbUpgradeTrans);
globalSchema = db._dbSchema = newSchema;
const diff = getSchemaDiff(oldSchema, newSchema);
diff.add.forEach((tuple) => {
createTable(idbUpgradeTrans, tuple[0], tuple[1].primKey, tuple[1].indexes);
});
diff.change.forEach((change) => {
if (change.recreate) {
throw new exceptions.Upgrade("Not yet support for changing primary key");
} else {
const store = idbUpgradeTrans.objectStore(change.name);
change.add.forEach((idx) => addIndex(store, idx));
change.change.forEach((idx) => {
store.deleteIndex(idx.name);
addIndex(store, idx);
});
change.del.forEach((idxName) => store.deleteIndex(idxName));
}
});
const contentUpgrade = version2._cfg.contentUpgrade;
if (contentUpgrade && version2._cfg.version > oldVersion) {
generateMiddlewareStacks(db, idbUpgradeTrans);
trans._memoizedTables = {};
anyContentUpgraderHasRun = true;
let upgradeSchema = shallowClone(newSchema);
diff.del.forEach((table) => {
upgradeSchema[table] = oldSchema[table];
});
removeTablesApi(db, [db.Transaction.prototype]);
setApiOnPlace(db, [db.Transaction.prototype], keys(upgradeSchema), upgradeSchema);
trans.schema = upgradeSchema;
const contentUpgradeIsAsync = isAsyncFunction(contentUpgrade);
if (contentUpgradeIsAsync) {
incrementExpectedAwaits();
}
let returnValue;
const promiseFollowed = DexiePromise.follow(() => {
returnValue = contentUpgrade(trans);
if (returnValue) {
if (contentUpgradeIsAsync) {
var decrementor = decrementExpectedAwaits.bind(null, null);
returnValue.then(decrementor, decrementor);
}
}
});
return returnValue && typeof returnValue.then === "function" ? DexiePromise.resolve(returnValue) : promiseFollowed.then(() => returnValue);
}
});
queue.push((idbtrans) => {
if (!anyContentUpgraderHasRun || !hasIEDeleteObjectStoreBug) {
const newSchema = version2._cfg.dbschema;
deleteRemovedTables(newSchema, idbtrans);
}
removeTablesApi(db, [db.Transaction.prototype]);
setApiOnPlace(db, [db.Transaction.prototype], db._storeNames, db._dbSchema);
trans.schema = db._dbSchema;
});
});
function runQueue() {
return queue.length ? DexiePromise.resolve(queue.shift()(trans.idbtrans)).then(runQueue) : DexiePromise.resolve();
}
return runQueue().then(() => {
createMissingTables(globalSchema, idbUpgradeTrans);
});
}
function getSchemaDiff(oldSchema, newSchema) {
const diff = {
del: [],
add: [],
change: []
};
let table;
for (table in oldSchema) {
if (!newSchema[table])
diff.del.push(table);
}
for (table in newSchema) {
const oldDef = oldSchema[table], newDef = newSchema[table];
if (!oldDef) {
diff.add.push([table, newDef]);
} else {
const change = {
name: table,
def: newDef,
recreate: false,
del: [],
add: [],
change: []
};
if ("" + (oldDef.primKey.keyPath || "") !== "" + (newDef.primKey.keyPath || "") || oldDef.primKey.auto !== newDef.primKey.auto && !isIEOrEdge) {
change.recreate = true;
diff.change.push(change);
} else {
const oldIndexes = oldDef.idxByName;
const newIndexes = newDef.idxByName;
let idxName;
for (idxName in oldIndexes) {
if (!newIndexes[idxName])
change.del.push(idxName);
}
for (idxName in newIndexes) {
const oldIdx = oldIndexes[idxName], newIdx = newIndexes[idxName];
if (!oldIdx)
change.add.push(newIdx);
else if (oldIdx.src !== newIdx.src)
change.change.push(newIdx);
}
if (change.del.length > 0 || change.add.length > 0 || change.change.length > 0) {
diff.change.push(change);
}
}
}
}
return diff;
}
function createTable(idbtrans, tableName, primKey, indexes) {
const store = idbtrans.db.createObjectStore(tableName, primKey.keyPath ? { keyPath: primKey.keyPath, autoIncrement: primKey.auto } : { autoIncrement: primKey.auto });
indexes.forEach((idx) => addIndex(store, idx));
return store;
}
function createMissingTables(newSchema, idbtrans) {
keys(newSchema).forEach((tableName) => {
if (!idbtrans.db.objectStoreNames.contains(tableName)) {
createTable(idbtrans, tableName, newSchema[tableName].primKey, newSchema[tableName].indexes);
}
});
}
function deleteRemovedTables(newSchema, idbtrans) {
[].slice.call(idbtrans.db.objectStoreNames).forEach((storeName) => newSchema[storeName] == null && idbtrans.db.deleteObjectStore(storeName));
}
function addIndex(store, idx) {
store.createIndex(idx.name, idx.keyPath, { unique: idx.unique, multiEntry: idx.multi });
}
function buildGlobalSchema(db, idbdb, tmpTrans) {
const globalSchema = {};
const dbStoreNames = slice(idbdb.objectStoreNames, 0);
dbStoreNames.forEach((storeName) => {
const store = tmpTrans.objectStore(storeName);
let keyPath = store.keyPath;
const primKey = createIndexSpec(nameFromKeyPath(keyPath), keyPath || "", false, false, !!store.autoIncrement, keyPath && typeof keyPath !== "string", true);
const indexes = [];
for (let j4 = 0; j4 < store.indexNames.length; ++j4) {
const idbindex = store.index(store.indexNames[j4]);
keyPath = idbindex.keyPath;
var index = createIndexSpec(idbindex.name, keyPath, !!idbindex.unique, !!idbindex.multiEntry, false, keyPath && typeof keyPath !== "string", false);
indexes.push(index);
}
globalSchema[storeName] = createTableSchema(storeName, primKey, indexes);
});
return globalSchema;
}
function readGlobalSchema({ _novip: db }, idbdb, tmpTrans) {
db.verno = idbdb.version / 10;
const globalSchema = db._dbSchema = buildGlobalSchema(db, idbdb, tmpTrans);
db._storeNames = slice(idbdb.objectStoreNames, 0);
setApiOnPlace(db, [db._allTables], keys(globalSchema), globalSchema);
}
function verifyInstalledSchema(db, tmpTrans) {
const installedSchema = buildGlobalSchema(db, db.idbdb, tmpTrans);
const diff = getSchemaDiff(installedSchema, db._dbSchema);
return !(diff.add.length || diff.change.some((ch) => ch.add.length || ch.change.length));
}
function adjustToExistingIndexNames({ _novip: db }, schema, idbtrans) {
const storeNames = idbtrans.db.objectStoreNames;
for (let i4 = 0; i4 < storeNames.length; ++i4) {
const storeName = storeNames[i4];
const store = idbtrans.objectStore(storeName);
db._hasGetAll = "getAll" in store;
for (let j4 = 0; j4 < store.indexNames.length; ++j4) {
const indexName = store.indexNames[j4];
const keyPath = store.index(indexName).keyPath;
const dexieName = typeof keyPath === "string" ? keyPath : "[" + slice(keyPath).join("+") + "]";
if (schema[storeName]) {
const indexSpec = schema[storeName].idxByName[dexieName];
if (indexSpec) {
indexSpec.name = indexName;
delete schema[storeName].idxByName[dexieName];
schema[storeName].idxByName[indexName] = indexSpec;
}
}
}
}
if (typeof navigator !== "undefined" && /Safari/.test(navigator.userAgent) && !/(Chrome\/|Edge\/)/.test(navigator.userAgent) && _global.WorkerGlobalScope && _global instanceof _global.WorkerGlobalScope && [].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1] < 604) {
db._hasGetAll = false;
}
}
function parseIndexSyntax(primKeyAndIndexes) {
return primKeyAndIndexes.split(",").map((index, indexNum) => {
index = index.trim();
const name = index.replace(/([&*]|\+\+)/g, "");
const keyPath = /^\[/.test(name) ? name.match(/^\[(.*)\]$/)[1].split("+") : name;
return createIndexSpec(name, keyPath || null, /\&/.test(index), /\*/.test(index), /\+\+/.test(index), isArray(keyPath), indexNum === 0);
});
}
var Version = class {
_parseStoresSpec(stores, outSchema) {
keys(stores).forEach((tableName) => {
if (stores[tableName] !== null) {
var indexes = parseIndexSyntax(stores[tableName]);
var primKey = indexes.shift();
if (primKey.multi)
throw new exceptions.Schema("Primary key cannot be multi-valued");
indexes.forEach((idx) => {
if (idx.auto)
throw new exceptions.Schema("Only primary key can be marked as autoIncrement (++)");
if (!idx.keyPath)
throw new exceptions.Schema("Index must have a name and cannot be an empty string");
});
outSchema[tableName] = createTableSchema(tableName, primKey, indexes);
}
});
}
stores(stores) {
const db = this.db;
this._cfg.storesSource = this._cfg.storesSource ? extend(this._cfg.storesSource, stores) : stores;
const versions = db._versions;
const storesSpec = {};
let dbschema = {};
versions.forEach((version2) => {
extend(storesSpec, version2._cfg.storesSource);
dbschema = version2._cfg.dbschema = {};
version2._parseStoresSpec(storesSpec, dbschema);
});
db._dbSchema = dbschema;
removeTablesApi(db, [db._allTables, db, db.Transaction.prototype]);
setApiOnPlace(db, [db._allTables, db, db.Transaction.prototype, this._cfg.tables], keys(dbschema), dbschema);
db._storeNames = keys(dbschema);
return this;
}
upgrade(upgradeFunction) {
this._cfg.contentUpgrade = promisableChain(this._cfg.contentUpgrade || nop, upgradeFunction);
return this;
}
};
function createVersionConstructor(db) {
return makeClassConstructor(Version.prototype, function Version2(versionNumber) {
this.db = db;
this._cfg = {
version: versionNumber,
storesSource: null,
dbschema: {},
tables: {},
contentUpgrade: null
};
});
}
function getDbNamesTable(indexedDB2, IDBKeyRange) {
let dbNamesDB = indexedDB2["_dbNamesDB"];
if (!dbNamesDB) {
dbNamesDB = indexedDB2["_dbNamesDB"] = new Dexie$1(DBNAMES_DB, {
addons: [],
indexedDB: indexedDB2,
IDBKeyRange
});
dbNamesDB.version(1).stores({ dbnames: "name" });
}
return dbNamesDB.table("dbnames");
}
function hasDatabasesNative(indexedDB2) {
return indexedDB2 && typeof indexedDB2.databases === "function";
}
function getDatabaseNames({ indexedDB: indexedDB2, IDBKeyRange }) {
return hasDatabasesNative(indexedDB2) ? Promise.resolve(indexedDB2.databases()).then((infos) => infos.map((info) => info.name).filter((name) => name !== DBNAMES_DB)) : getDbNamesTable(indexedDB2, IDBKeyRange).toCollection().primaryKeys();
}
function _onDatabaseCreated({ indexedDB: indexedDB2, IDBKeyRange }, name) {
!hasDatabasesNative(indexedDB2) && name !== DBNAMES_DB && getDbNamesTable(indexedDB2, IDBKeyRange).put({ name }).catch(nop);
}
function _onDatabaseDeleted({ indexedDB: indexedDB2, IDBKeyRange }, name) {
!hasDatabasesNative(indexedDB2) && name !== DBNAMES_DB && getDbNamesTable(indexedDB2, IDBKeyRange).delete(name).catch(nop);
}
function vip(fn2) {
return newScope(function() {
PSD.letThrough = true;
return fn2();
});
}
function idbReady() {
var isSafari = !navigator.userAgentData && /Safari\//.test(navigator.userAgent) && !/Chrom(e|ium)\//.test(navigator.userAgent);
if (!isSafari || !indexedDB.databases)
return Promise.resolve();
var intervalId;
return new Promise(function(resolve) {
var tryIdb = function() {
return indexedDB.databases().finally(resolve);
};
intervalId = setInterval(tryIdb, 100);
tryIdb();
}).finally(function() {
return clearInterval(intervalId);
});
}
function dexieOpen(db) {
const state = db._state;
const { indexedDB: indexedDB2 } = db._deps;
if (state.isBeingOpened || db.idbdb)
return state.dbReadyPromise.then(() => state.dbOpenError ? rejection(state.dbOpenError) : db);
debug && (state.openCanceller._stackHolder = getErrorWithStack());
state.isBeingOpened = true;
state.dbOpenError = null;
state.openComplete = false;
const openCanceller = state.openCanceller;
function throwIfCancelled() {
if (state.openCanceller !== openCanceller)
throw new exceptions.DatabaseClosed("db.open() was cancelled");
}
let resolveDbReady = state.dbReadyResolve, upgradeTransaction = null, wasCreated = false;
return DexiePromise.race([openCanceller, (typeof navigator === "undefined" ? DexiePromise.resolve() : idbReady()).then(() => new DexiePromise((resolve, reject) => {
throwIfCancelled();
if (!indexedDB2)
throw new exceptions.MissingAPI();
const dbName = db.name;
const req = state.autoSchema ? indexedDB2.open(dbName) : indexedDB2.open(dbName, Math.round(db.verno * 10));
if (!req)
throw new exceptions.MissingAPI();
req.onerror = eventRejectHandler(reject);
req.onblocked = wrap(db._fireOnBlocked);
req.onupgradeneeded = wrap((e3) => {
upgradeTransaction = req.transaction;
if (state.autoSchema && !db._options.allowEmptyDB) {
req.onerror = preventDefault;
upgradeTransaction.abort();
req.result.close();
const delreq = indexedDB2.deleteDatabase(dbName);
delreq.onsuccess = delreq.onerror = wrap(() => {
reject(new exceptions.NoSuchDatabase(`Database ${dbName} doesnt exist`));
});
} else {
upgradeTransaction.onerror = eventRejectHandler(reject);
var oldVer = e3.oldVersion > Math.pow(2, 62) ? 0 : e3.oldVersion;
wasCreated = oldVer < 1;
db._novip.idbdb = req.result;
runUpgraders(db, oldVer / 10, upgradeTransaction, reject);
}
}, reject);
req.onsuccess = wrap(() => {
upgradeTransaction = null;
const idbdb = db._novip.idbdb = req.result;
const objectStoreNames = slice(idbdb.objectStoreNames);
if (objectStoreNames.length > 0)
try {
const tmpTrans = idbdb.transaction(safariMultiStoreFix(objectStoreNames), "readonly");
if (state.autoSchema)
readGlobalSchema(db, idbdb, tmpTrans);
else {
adjustToExistingIndexNames(db, db._dbSchema, tmpTrans);
if (!verifyInstalledSchema(db, tmpTrans)) {
console.warn(`Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Some queries may fail.`);
}
}
generateMiddlewareStacks(db, tmpTrans);
} catch (e3) {
}
connections.push(db);
idbdb.onversionchange = wrap((ev) => {
state.vcFired = true;
db.on("versionchange").fire(ev);
});
idbdb.onclose = wrap((ev) => {
db.on("close").fire(ev);
});
if (wasCreated)
_onDatabaseCreated(db._deps, dbName);
resolve();
}, reject);
}))]).then(() => {
throwIfCancelled();
state.onReadyBeingFired = [];
return DexiePromise.resolve(vip(() => db.on.ready.fire(db.vip))).then(function fireRemainders() {
if (state.onReadyBeingFired.length > 0) {
let remainders = state.onReadyBeingFired.reduce(promisableChain, nop);
state.onReadyBeingFired = [];
return DexiePromise.resolve(vip(() => remainders(db.vip))).then(fireRemainders);
}
});
}).finally(() => {
state.onReadyBeingFired = null;
state.isBeingOpened = false;
}).then(() => {
return db;
}).catch((err) => {
state.dbOpenError = err;
try {
upgradeTransaction && upgradeTransaction.abort();
} catch (_a) {
}
if (openCanceller === state.openCanceller) {
db._close();
}
return rejection(err);
}).finally(() => {
state.openComplete = true;
resolveDbReady();
});
}
function awaitIterator(iterator) {
var callNext = (result) => iterator.next(result), doThrow = (error) => iterator.throw(error), onSuccess = step(callNext), onError = step(doThrow);
function step(getNext) {
return (val) => {
var next = getNext(val), value = next.value;
return next.done ? value : !value || typeof value.then !== "function" ? isArray(value) ? Promise.all(value).then(onSuccess, onError) : onSuccess(value) : value.then(onSuccess, onError);
};
}
return step(callNext)();
}
function extractTransactionArgs(mode, _tableArgs_, scopeFunc) {
var i4 = arguments.length;
if (i4 < 2)
throw new exceptions.InvalidArgument("Too few arguments");
var args = new Array(i4 - 1);
while (--i4)
args[i4 - 1] = arguments[i4];
scopeFunc = args.pop();
var tables = flatten(args);
return [mode, tables, scopeFunc];
}
function enterTransactionScope(db, mode, storeNames, parentTransaction, scopeFunc) {
return DexiePromise.resolve().then(() => {
const transless = PSD.transless || PSD;
const trans = db._createTransaction(mode, storeNames, db._dbSchema, parentTransaction);
const zoneProps = {
trans,
transless
};
if (parentTransaction) {
trans.idbtrans = parentTransaction.idbtrans;
} else {
try {
trans.create();
db._state.PR1398_maxLoop = 3;
} catch (ex) {
if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) {
console.warn("Dexie: Need to reopen db");
db._close();
return db.open().then(() => enterTransactionScope(db, mode, storeNames, null, scopeFunc));
}
return rejection(ex);
}
}
const scopeFuncIsAsync = isAsyncFunction(scopeFunc);
if (scopeFuncIsAsync) {
incrementExpectedAwaits();
}
let returnValue;
const promiseFollowed = DexiePromise.follow(() => {
returnValue = scopeFunc.call(trans, trans);
if (returnValue) {
if (scopeFuncIsAsync) {
var decrementor = decrementExpectedAwaits.bind(null, null);
returnValue.then(decrementor, decrementor);
} else if (typeof returnValue.next === "function" && typeof returnValue.throw === "function") {
returnValue = awaitIterator(returnValue);
}
}
}, zoneProps);
return (returnValue && typeof returnValue.then === "function" ? DexiePromise.resolve(returnValue).then((x4) => trans.active ? x4 : rejection(new exceptions.PrematureCommit("Transaction committed too early. See http://bit.ly/2kdckMn"))) : promiseFollowed.then(() => returnValue)).then((x4) => {
if (parentTransaction)
trans._resolve();
return trans._completion.then(() => x4);
}).catch((e3) => {
trans._reject(e3);
return rejection(e3);
});
});
}
function pad(a3, value, count) {
const result = isArray(a3) ? a3.slice() : [a3];
for (let i4 = 0; i4 < count; ++i4)
result.push(value);
return result;
}
function createVirtualIndexMiddleware(down) {
return {
...down,
table(tableName) {
const table = down.table(tableName);
const { schema } = table;
const indexLookup = {};
const allVirtualIndexes = [];
function addVirtualIndexes(keyPath, keyTail, lowLevelIndex) {
const keyPathAlias = getKeyPathAlias(keyPath);
const indexList = indexLookup[keyPathAlias] = indexLookup[keyPathAlias] || [];
const keyLength = keyPath == null ? 0 : typeof keyPath === "string" ? 1 : keyPath.length;
const isVirtual = keyTail > 0;
const virtualIndex = {
...lowLevelIndex,
isVirtual,
keyTail,
keyLength,
extractKey: getKeyExtractor(keyPath),
unique: !isVirtual && lowLevelIndex.unique
};
indexList.push(virtualIndex);
if (!virtualIndex.isPrimaryKey) {
allVirtualIndexes.push(virtualIndex);
}
if (keyLength > 1) {
const virtualKeyPath = keyLength === 2 ? keyPath[0] : keyPath.slice(0, keyLength - 1);
addVirtualIndexes(virtualKeyPath, keyTail + 1, lowLevelIndex);
}
indexList.sort((a3, b3) => a3.keyTail - b3.keyTail);
return virtualIndex;
}
const primaryKey = addVirtualIndexes(schema.primaryKey.keyPath, 0, schema.primaryKey);
indexLookup[":id"] = [primaryKey];
for (const index of schema.indexes) {
addVirtualIndexes(index.keyPath, 0, index);
}
function findBestIndex(keyPath) {
const result2 = indexLookup[getKeyPathAlias(keyPath)];
return result2 && result2[0];
}
function translateRange(range, keyTail) {
return {
type: range.type === 1 ? 2 : range.type,
lower: pad(range.lower, range.lowerOpen ? down.MAX_KEY : down.MIN_KEY, keyTail),
lowerOpen: true,
upper: pad(range.upper, range.upperOpen ? down.MIN_KEY : down.MAX_KEY, keyTail),
upperOpen: true
};
}
function translateRequest(req) {
const index = req.query.index;
return index.isVirtual ? {
...req,
query: {
index,
range: translateRange(req.query.range, index.keyTail)
}
} : req;
}
const result = {
...table,
schema: {
...schema,
primaryKey,
indexes: allVirtualIndexes,
getIndexByKeyPath: findBestIndex
},
count(req) {
return table.count(translateRequest(req));
},
query(req) {
return table.query(translateRequest(req));
},
openCursor(req) {
const { keyTail, isVirtual, keyLength } = req.query.index;
if (!isVirtual)
return table.openCursor(req);
function createVirtualCursor(cursor) {
function _continue(key) {
key != null ? cursor.continue(pad(key, req.reverse ? down.MAX_KEY : down.MIN_KEY, keyTail)) : req.unique ? cursor.continue(cursor.key.slice(0, keyLength).concat(req.reverse ? down.MIN_KEY : down.MAX_KEY, keyTail)) : cursor.continue();
}
const virtualCursor = Object.create(cursor, {
continue: { value: _continue },
continuePrimaryKey: {
value(key, primaryKey2) {
cursor.continuePrimaryKey(pad(key, down.MAX_KEY, keyTail), primaryKey2);
}
},
primaryKey: {
get() {
return cursor.primaryKey;
}
},
key: {
get() {
const key = cursor.key;
return keyLength === 1 ? key[0] : key.slice(0, keyLength);
}
},
value: {
get() {
return cursor.value;
}
}
});
return virtualCursor;
}
return table.openCursor(translateRequest(req)).then((cursor) => cursor && createVirtualCursor(cursor));
}
};
return result;
}
};
}
var virtualIndexMiddleware = {
stack: "dbcore",
name: "VirtualIndexMiddleware",
level: 1,
create: createVirtualIndexMiddleware
};
function getObjectDiff(a3, b3, rv, prfx) {
rv = rv || {};
prfx = prfx || "";
keys(a3).forEach((prop) => {
if (!hasOwn(b3, prop)) {
rv[prfx + prop] = void 0;
} else {
var ap = a3[prop], bp = b3[prop];
if (typeof ap === "object" && typeof bp === "object" && ap && bp) {
const apTypeName = toStringTag(ap);
const bpTypeName = toStringTag(bp);
if (apTypeName !== bpTypeName) {
rv[prfx + prop] = b3[prop];
} else if (apTypeName === "Object") {
getObjectDiff(ap, bp, rv, prfx + prop + ".");
} else if (ap !== bp) {
rv[prfx + prop] = b3[prop];
}
} else if (ap !== bp)
rv[prfx + prop] = b3[prop];
}
});
keys(b3).forEach((prop) => {
if (!hasOwn(a3, prop)) {
rv[prfx + prop] = b3[prop];
}
});
return rv;
}
function getEffectiveKeys(primaryKey, req) {
if (req.type === "delete")
return req.keys;
return req.keys || req.values.map(primaryKey.extractKey);
}
var hooksMiddleware = {
stack: "dbcore",
name: "HooksMiddleware",
level: 2,
create: (downCore) => ({
...downCore,
table(tableName) {
const downTable = downCore.table(tableName);
const { primaryKey } = downTable.schema;
const tableMiddleware = {
...downTable,
mutate(req) {
const dxTrans = PSD.trans;
const { deleting, creating, updating } = dxTrans.table(tableName).hook;
switch (req.type) {
case "add":
if (creating.fire === nop)
break;
return dxTrans._promise("readwrite", () => addPutOrDelete(req), true);
case "put":
if (creating.fire === nop && updating.fire === nop)
break;
return dxTrans._promise("readwrite", () => addPutOrDelete(req), true);
case "delete":
if (deleting.fire === nop)
break;
return dxTrans._promise("readwrite", () => addPutOrDelete(req), true);
case "deleteRange":
if (deleting.fire === nop)
break;
return dxTrans._promise("readwrite", () => deleteRange(req), true);
}
return downTable.mutate(req);
function addPutOrDelete(req2) {
const dxTrans2 = PSD.trans;
const keys2 = req2.keys || getEffectiveKeys(primaryKey, req2);
if (!keys2)
throw new Error("Keys missing");
req2 = req2.type === "add" || req2.type === "put" ? { ...req2, keys: keys2 } : { ...req2 };
if (req2.type !== "delete")
req2.values = [...req2.values];
if (req2.keys)
req2.keys = [...req2.keys];
return getExistingValues(downTable, req2, keys2).then((existingValues) => {
const contexts = keys2.map((key, i4) => {
const existingValue = existingValues[i4];
const ctx = { onerror: null, onsuccess: null };
if (req2.type === "delete") {
deleting.fire.call(ctx, key, existingValue, dxTrans2);
} else if (req2.type === "add" || existingValue === void 0) {
const generatedPrimaryKey = creating.fire.call(ctx, key, req2.values[i4], dxTrans2);
if (key == null && generatedPrimaryKey != null) {
key = generatedPrimaryKey;
req2.keys[i4] = key;
if (!primaryKey.outbound) {
setByKeyPath(req2.values[i4], primaryKey.keyPath, key);
}
}
} else {
const objectDiff = getObjectDiff(existingValue, req2.values[i4]);
const additionalChanges = updating.fire.call(ctx, objectDiff, key, existingValue, dxTrans2);
if (additionalChanges) {
const requestedValue = req2.values[i4];
Object.keys(additionalChanges).forEach((keyPath) => {
if (hasOwn(requestedValue, keyPath)) {
requestedValue[keyPath] = additionalChanges[keyPath];
} else {
setByKeyPath(requestedValue, keyPath, additionalChanges[keyPath]);
}
});
}
}
return ctx;
});
return downTable.mutate(req2).then(({ failures, results, numFailures, lastResult }) => {
for (let i4 = 0; i4 < keys2.length; ++i4) {
const primKey = results ? results[i4] : keys2[i4];
const ctx = contexts[i4];
if (primKey == null) {
ctx.onerror && ctx.onerror(failures[i4]);
} else {
ctx.onsuccess && ctx.onsuccess(
req2.type === "put" && existingValues[i4] ? req2.values[i4] : primKey
);
}
}
return { failures, results, numFailures, lastResult };
}).catch((error) => {
contexts.forEach((ctx) => ctx.onerror && ctx.onerror(error));
return Promise.reject(error);
});
});
}
function deleteRange(req2) {
return deleteNextChunk(req2.trans, req2.range, 1e4);
}
function deleteNextChunk(trans, range, limit) {
return downTable.query({ trans, values: false, query: { index: primaryKey, range }, limit }).then(({ result }) => {
return addPutOrDelete({ type: "delete", keys: result, trans }).then((res) => {
if (res.numFailures > 0)
return Promise.reject(res.failures[0]);
if (result.length < limit) {
return { failures: [], numFailures: 0, lastResult: void 0 };
} else {
return deleteNextChunk(trans, { ...range, lower: result[result.length - 1], lowerOpen: true }, limit);
}
});
});
}
}
};
return tableMiddleware;
}
})
};
function getExistingValues(table, req, effectiveKeys) {
return req.type === "add" ? Promise.resolve([]) : table.getMany({ trans: req.trans, keys: effectiveKeys, cache: "immutable" });
}
function getFromTransactionCache(keys2, cache, clone) {
try {
if (!cache)
return null;
if (cache.keys.length < keys2.length)
return null;
const result = [];
for (let i4 = 0, j4 = 0; i4 < cache.keys.length && j4 < keys2.length; ++i4) {
if (cmp(cache.keys[i4], keys2[j4]) !== 0)
continue;
result.push(clone ? deepClone(cache.values[i4]) : cache.values[i4]);
++j4;
}
return result.length === keys2.length ? result : null;
} catch (_a) {
return null;
}
}
var cacheExistingValuesMiddleware = {
stack: "dbcore",
level: -1,
create: (core) => {
return {
table: (tableName) => {
const table = core.table(tableName);
return {
...table,
getMany: (req) => {
if (!req.cache) {
return table.getMany(req);
}
const cachedResult = getFromTransactionCache(req.keys, req.trans["_cache"], req.cache === "clone");
if (cachedResult) {
return DexiePromise.resolve(cachedResult);
}
return table.getMany(req).then((res) => {
req.trans["_cache"] = {
keys: req.keys,
values: req.cache === "clone" ? deepClone(res) : res
};
return res;
});
},
mutate: (req) => {
if (req.type !== "add")
req.trans["_cache"] = null;
return table.mutate(req);
}
};
}
};
}
};
function isEmptyRange(node) {
return !("from" in node);
}
var RangeSet = function(fromOrTree, to) {
if (this) {
extend(this, arguments.length ? { d: 1, from: fromOrTree, to: arguments.length > 1 ? to : fromOrTree } : { d: 0 });
} else {
const rv = new RangeSet();
if (fromOrTree && "d" in fromOrTree) {
extend(rv, fromOrTree);
}
return rv;
}
};
props(RangeSet.prototype, {
add(rangeSet) {
mergeRanges(this, rangeSet);
return this;
},
addKey(key) {
addRange(this, key, key);
return this;
},
addKeys(keys2) {
keys2.forEach((key) => addRange(this, key, key));
return this;
},
[iteratorSymbol]() {
return getRangeSetIterator(this);
}
});
function addRange(target, from, to) {
const diff = cmp(from, to);
if (isNaN(diff))
return;
if (diff > 0)
throw RangeError();
if (isEmptyRange(target))
return extend(target, { from, to, d: 1 });
const left = target.l;
const right = target.r;
if (cmp(to, target.from) < 0) {
left ? addRange(left, from, to) : target.l = { from, to, d: 1, l: null, r: null };
return rebalance(target);
}
if (cmp(from, target.to) > 0) {
right ? addRange(right, from, to) : target.r = { from, to, d: 1, l: null, r: null };
return rebalance(target);
}
if (cmp(from, target.from) < 0) {
target.from = from;
target.l = null;
target.d = right ? right.d + 1 : 1;
}
if (cmp(to, target.to) > 0) {
target.to = to;
target.r = null;
target.d = target.l ? target.l.d + 1 : 1;
}
const rightWasCutOff = !target.r;
if (left && !target.l) {
mergeRanges(target, left);
}
if (right && rightWasCutOff) {
mergeRanges(target, right);
}
}
function mergeRanges(target, newSet) {
function _addRangeSet(target2, { from, to, l: l3, r: r3 }) {
addRange(target2, from, to);
if (l3)
_addRangeSet(target2, l3);
if (r3)
_addRangeSet(target2, r3);
}
if (!isEmptyRange(newSet))
_addRangeSet(target, newSet);
}
function rangesOverlap(rangeSet1, rangeSet2) {
const i1 = getRangeSetIterator(rangeSet2);
let nextResult1 = i1.next();
if (nextResult1.done)
return false;
let a3 = nextResult1.value;
const i22 = getRangeSetIterator(rangeSet1);
let nextResult2 = i22.next(a3.from);
let b3 = nextResult2.value;
while (!nextResult1.done && !nextResult2.done) {
if (cmp(b3.from, a3.to) <= 0 && cmp(b3.to, a3.from) >= 0)
return true;
cmp(a3.from, b3.from) < 0 ? a3 = (nextResult1 = i1.next(b3.from)).value : b3 = (nextResult2 = i22.next(a3.from)).value;
}
return false;
}
function getRangeSetIterator(node) {
let state = isEmptyRange(node) ? null : { s: 0, n: node };
return {
next(key) {
const keyProvided = arguments.length > 0;
while (state) {
switch (state.s) {
case 0:
state.s = 1;
if (keyProvided) {
while (state.n.l && cmp(key, state.n.from) < 0)
state = { up: state, n: state.n.l, s: 1 };
} else {
while (state.n.l)
state = { up: state, n: state.n.l, s: 1 };
}
case 1:
state.s = 2;
if (!keyProvided || cmp(key, state.n.to) <= 0)
return { value: state.n, done: false };
case 2:
if (state.n.r) {
state.s = 3;
state = { up: state, n: state.n.r, s: 0 };
continue;
}
case 3:
state = state.up;
}
}
return { done: true };
}
};
}
function rebalance(target) {
var _a, _b;
const diff = (((_a = target.r) === null || _a === void 0 ? void 0 : _a.d) || 0) - (((_b = target.l) === null || _b === void 0 ? void 0 : _b.d) || 0);
const r3 = diff > 1 ? "r" : diff < -1 ? "l" : "";
if (r3) {
const l3 = r3 === "r" ? "l" : "r";
const rootClone = { ...target };
const oldRootRight = target[r3];
target.from = oldRootRight.from;
target.to = oldRootRight.to;
target[r3] = oldRootRight[r3];
rootClone[r3] = oldRootRight[l3];
target[l3] = rootClone;
rootClone.d = computeDepth(rootClone);
}
target.d = computeDepth(target);
}
function computeDepth({ r: r3, l: l3 }) {
return (r3 ? l3 ? Math.max(r3.d, l3.d) : r3.d : l3 ? l3.d : 0) + 1;
}
var observabilityMiddleware = {
stack: "dbcore",
level: 0,
create: (core) => {
const dbName = core.schema.name;
const FULL_RANGE = new RangeSet(core.MIN_KEY, core.MAX_KEY);
return {
...core,
table: (tableName) => {
const table = core.table(tableName);
const { schema } = table;
const { primaryKey } = schema;
const { extractKey, outbound } = primaryKey;
const tableClone = {
...table,
mutate: (req) => {
const trans = req.trans;
const mutatedParts = trans.mutatedParts || (trans.mutatedParts = {});
const getRangeSet = (indexName) => {
const part = `idb://${dbName}/${tableName}/${indexName}`;
return mutatedParts[part] || (mutatedParts[part] = new RangeSet());
};
const pkRangeSet = getRangeSet("");
const delsRangeSet = getRangeSet(":dels");
const { type: type2 } = req;
let [keys2, newObjs] = req.type === "deleteRange" ? [req.range] : req.type === "delete" ? [req.keys] : req.values.length < 50 ? [[], req.values] : [];
const oldCache = req.trans["_cache"];
return table.mutate(req).then((res) => {
if (isArray(keys2)) {
if (type2 !== "delete")
keys2 = res.results;
pkRangeSet.addKeys(keys2);
const oldObjs = getFromTransactionCache(keys2, oldCache);
if (!oldObjs && type2 !== "add") {
delsRangeSet.addKeys(keys2);
}
if (oldObjs || newObjs) {
trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs);
}
} else if (keys2) {
const range = { from: keys2.lower, to: keys2.upper };
delsRangeSet.add(range);
pkRangeSet.add(range);
} else {
pkRangeSet.add(FULL_RANGE);
delsRangeSet.add(FULL_RANGE);
schema.indexes.forEach((idx) => getRangeSet(idx.name).add(FULL_RANGE));
}
return res;
});
}
};
const getRange = ({ query: { index, range } }) => {
var _a, _b;
return [
index,
new RangeSet((_a = range.lower) !== null && _a !== void 0 ? _a : core.MIN_KEY, (_b = range.upper) !== null && _b !== void 0 ? _b : core.MAX_KEY)
];
};
const readSubscribers = {
get: (req) => [primaryKey, new RangeSet(req.key)],
getMany: (req) => [primaryKey, new RangeSet().addKeys(req.keys)],
count: getRange,
query: getRange,
openCursor: getRange
};
keys(readSubscribers).forEach((method) => {
tableClone[method] = function(req) {
const { subscr } = PSD;
if (subscr) {
const getRangeSet = (indexName) => {
const part = `idb://${dbName}/${tableName}/${indexName}`;
return subscr[part] || (subscr[part] = new RangeSet());
};
const pkRangeSet = getRangeSet("");
const delsRangeSet = getRangeSet(":dels");
const [queriedIndex, queriedRanges] = readSubscribers[method](req);
getRangeSet(queriedIndex.name || "").add(queriedRanges);
if (!queriedIndex.isPrimaryKey) {
if (method === "count") {
delsRangeSet.add(FULL_RANGE);
} else {
const keysPromise = method === "query" && outbound && req.values && table.query({
...req,
values: false
});
return table[method].apply(this, arguments).then((res) => {
if (method === "query") {
if (outbound && req.values) {
return keysPromise.then(({ result: resultingKeys }) => {
pkRangeSet.addKeys(resultingKeys);
return res;
});
}
const pKeys = req.values ? res.result.map(extractKey) : res.result;
if (req.values) {
pkRangeSet.addKeys(pKeys);
} else {
delsRangeSet.addKeys(pKeys);
}
} else if (method === "openCursor") {
const cursor = res;
const wantValues = req.values;
return cursor && Object.create(cursor, {
key: {
get() {
delsRangeSet.addKey(cursor.primaryKey);
return cursor.key;
}
},
primaryKey: {
get() {
const pkey = cursor.primaryKey;
delsRangeSet.addKey(pkey);
return pkey;
}
},
value: {
get() {
wantValues && pkRangeSet.addKey(cursor.primaryKey);
return cursor.value;
}
}
});
}
return res;
});
}
}
}
return table[method].apply(this, arguments);
};
});
return tableClone;
}
};
}
};
function trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs) {
function addAffectedIndex(ix) {
const rangeSet = getRangeSet(ix.name || "");
function extractKey(obj) {
return obj != null ? ix.extractKey(obj) : null;
}
const addKeyOrKeys = (key) => ix.multiEntry && isArray(key) ? key.forEach((key2) => rangeSet.addKey(key2)) : rangeSet.addKey(key);
(oldObjs || newObjs).forEach((_3, i4) => {
const oldKey = oldObjs && extractKey(oldObjs[i4]);
const newKey = newObjs && extractKey(newObjs[i4]);
if (cmp(oldKey, newKey) !== 0) {
if (oldKey != null)
addKeyOrKeys(oldKey);
if (newKey != null)
addKeyOrKeys(newKey);
}
});
}
schema.indexes.forEach(addAffectedIndex);
}
var Dexie$1 = class {
constructor(name, options) {
this._middlewares = {};
this.verno = 0;
const deps = Dexie$1.dependencies;
this._options = options = {
addons: Dexie$1.addons,
autoOpen: true,
indexedDB: deps.indexedDB,
IDBKeyRange: deps.IDBKeyRange,
...options
};
this._deps = {
indexedDB: options.indexedDB,
IDBKeyRange: options.IDBKeyRange
};
const { addons } = options;
this._dbSchema = {};
this._versions = [];
this._storeNames = [];
this._allTables = {};
this.idbdb = null;
this._novip = this;
const state = {
dbOpenError: null,
isBeingOpened: false,
onReadyBeingFired: null,
openComplete: false,
dbReadyResolve: nop,
dbReadyPromise: null,
cancelOpen: nop,
openCanceller: null,
autoSchema: true,
PR1398_maxLoop: 3
};
state.dbReadyPromise = new DexiePromise((resolve) => {
state.dbReadyResolve = resolve;
});
state.openCanceller = new DexiePromise((_3, reject) => {
state.cancelOpen = reject;
});
this._state = state;
this.name = name;
this.on = Events(this, "populate", "blocked", "versionchange", "close", { ready: [promisableChain, nop] });
this.on.ready.subscribe = override(this.on.ready.subscribe, (subscribe) => {
return (subscriber, bSticky) => {
Dexie$1.vip(() => {
const state2 = this._state;
if (state2.openComplete) {
if (!state2.dbOpenError)
DexiePromise.resolve().then(subscriber);
if (bSticky)
subscribe(subscriber);
} else if (state2.onReadyBeingFired) {
state2.onReadyBeingFired.push(subscriber);
if (bSticky)
subscribe(subscriber);
} else {
subscribe(subscriber);
const db = this;
if (!bSticky)
subscribe(function unsubscribe() {
db.on.ready.unsubscribe(subscriber);
db.on.ready.unsubscribe(unsubscribe);
});
}
});
};
});
this.Collection = createCollectionConstructor(this);
this.Table = createTableConstructor(this);
this.Transaction = createTransactionConstructor(this);
this.Version = createVersionConstructor(this);
this.WhereClause = createWhereClauseConstructor(this);
this.on("versionchange", (ev) => {
if (ev.newVersion > 0)
console.warn(`Another connection wants to upgrade database '${this.name}'. Closing db now to resume the upgrade.`);
else
console.warn(`Another connection wants to delete database '${this.name}'. Closing db now to resume the delete request.`);
this.close();
});
this.on("blocked", (ev) => {
if (!ev.newVersion || ev.newVersion < ev.oldVersion)
console.warn(`Dexie.delete('${this.name}') was blocked`);
else
console.warn(`Upgrade '${this.name}' blocked by other connection holding version ${ev.oldVersion / 10}`);
});
this._maxKey = getMaxKey(options.IDBKeyRange);
this._createTransaction = (mode, storeNames, dbschema, parentTransaction) => new this.Transaction(mode, storeNames, dbschema, this._options.chromeTransactionDurability, parentTransaction);
this._fireOnBlocked = (ev) => {
this.on("blocked").fire(ev);
connections.filter((c4) => c4.name === this.name && c4 !== this && !c4._state.vcFired).map((c4) => c4.on("versionchange").fire(ev));
};
this.use(virtualIndexMiddleware);
this.use(hooksMiddleware);
this.use(observabilityMiddleware);
this.use(cacheExistingValuesMiddleware);
this.vip = Object.create(this, { _vip: { value: true } });
addons.forEach((addon) => addon(this));
}
version(versionNumber) {
if (isNaN(versionNumber) || versionNumber < 0.1)
throw new exceptions.Type(`Given version is not a positive number`);
versionNumber = Math.round(versionNumber * 10) / 10;
if (this.idbdb || this._state.isBeingOpened)
throw new exceptions.Schema("Cannot add version when database is open");
this.verno = Math.max(this.verno, versionNumber);
const versions = this._versions;
var versionInstance = versions.filter((v3) => v3._cfg.version === versionNumber)[0];
if (versionInstance)
return versionInstance;
versionInstance = new this.Version(versionNumber);
versions.push(versionInstance);
versions.sort(lowerVersionFirst);
versionInstance.stores({});
this._state.autoSchema = false;
return versionInstance;
}
_whenReady(fn2) {
return this.idbdb && (this._state.openComplete || PSD.letThrough || this._vip) ? fn2() : new DexiePromise((resolve, reject) => {
if (this._state.openComplete) {
return reject(new exceptions.DatabaseClosed(this._state.dbOpenError));
}
if (!this._state.isBeingOpened) {
if (!this._options.autoOpen) {
reject(new exceptions.DatabaseClosed());
return;
}
this.open().catch(nop);
}
this._state.dbReadyPromise.then(resolve, reject);
}).then(fn2);
}
use({ stack, create, level, name }) {
if (name)
this.unuse({ stack, name });
const middlewares = this._middlewares[stack] || (this._middlewares[stack] = []);
middlewares.push({ stack, create, level: level == null ? 10 : level, name });
middlewares.sort((a3, b3) => a3.level - b3.level);
return this;
}
unuse({ stack, name, create }) {
if (stack && this._middlewares[stack]) {
this._middlewares[stack] = this._middlewares[stack].filter((mw) => create ? mw.create !== create : name ? mw.name !== name : false);
}
return this;
}
open() {
return dexieOpen(this);
}
_close() {
const state = this._state;
const idx = connections.indexOf(this);
if (idx >= 0)
connections.splice(idx, 1);
if (this.idbdb) {
try {
this.idbdb.close();
} catch (e3) {
}
this._novip.idbdb = null;
}
state.dbReadyPromise = new DexiePromise((resolve) => {
state.dbReadyResolve = resolve;
});
state.openCanceller = new DexiePromise((_3, reject) => {
state.cancelOpen = reject;
});
}
close() {
this._close();
const state = this._state;
this._options.autoOpen = false;
state.dbOpenError = new exceptions.DatabaseClosed();
if (state.isBeingOpened)
state.cancelOpen(state.dbOpenError);
}
delete() {
const hasArguments = arguments.length > 0;
const state = this._state;
return new DexiePromise((resolve, reject) => {
const doDelete = () => {
this.close();
var req = this._deps.indexedDB.deleteDatabase(this.name);
req.onsuccess = wrap(() => {
_onDatabaseDeleted(this._deps, this.name);
resolve();
});
req.onerror = eventRejectHandler(reject);
req.onblocked = this._fireOnBlocked;
};
if (hasArguments)
throw new exceptions.InvalidArgument("Arguments not allowed in db.delete()");
if (state.isBeingOpened) {
state.dbReadyPromise.then(doDelete);
} else {
doDelete();
}
});
}
backendDB() {
return this.idbdb;
}
isOpen() {
return this.idbdb !== null;
}
hasBeenClosed() {
const dbOpenError = this._state.dbOpenError;
return dbOpenError && dbOpenError.name === "DatabaseClosed";
}
hasFailed() {
return this._state.dbOpenError !== null;
}
dynamicallyOpened() {
return this._state.autoSchema;
}
get tables() {
return keys(this._allTables).map((name) => this._allTables[name]);
}
transaction() {
const args = extractTransactionArgs.apply(this, arguments);
return this._transaction.apply(this, args);
}
_transaction(mode, tables, scopeFunc) {
let parentTransaction = PSD.trans;
if (!parentTransaction || parentTransaction.db !== this || mode.indexOf("!") !== -1)
parentTransaction = null;
const onlyIfCompatible = mode.indexOf("?") !== -1;
mode = mode.replace("!", "").replace("?", "");
let idbMode, storeNames;
try {
storeNames = tables.map((table) => {
var storeName = table instanceof this.Table ? table.name : table;
if (typeof storeName !== "string")
throw new TypeError("Invalid table argument to Dexie.transaction(). Only Table or String are allowed");
return storeName;
});
if (mode == "r" || mode === READONLY)
idbMode = READONLY;
else if (mode == "rw" || mode == READWRITE)
idbMode = READWRITE;
else
throw new exceptions.InvalidArgument("Invalid transaction mode: " + mode);
if (parentTransaction) {
if (parentTransaction.mode === READONLY && idbMode === READWRITE) {
if (onlyIfCompatible) {
parentTransaction = null;
} else
throw new exceptions.SubTransaction("Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY");
}
if (parentTransaction) {
storeNames.forEach((storeName) => {
if (parentTransaction && parentTransaction.storeNames.indexOf(storeName) === -1) {
if (onlyIfCompatible) {
parentTransaction = null;
} else
throw new exceptions.SubTransaction("Table " + storeName + " not included in parent transaction.");
}
});
}
if (onlyIfCompatible && parentTransaction && !parentTransaction.active) {
parentTransaction = null;
}
}
} catch (e3) {
return parentTransaction ? parentTransaction._promise(null, (_3, reject) => {
reject(e3);
}) : rejection(e3);
}
const enterTransaction = enterTransactionScope.bind(null, this, idbMode, storeNames, parentTransaction, scopeFunc);
return parentTransaction ? parentTransaction._promise(idbMode, enterTransaction, "lock") : PSD.trans ? usePSD(PSD.transless, () => this._whenReady(enterTransaction)) : this._whenReady(enterTransaction);
}
table(tableName) {
if (!hasOwn(this._allTables, tableName)) {
throw new exceptions.InvalidTable(`Table ${tableName} does not exist`);
}
return this._allTables[tableName];
}
};
var symbolObservable = typeof Symbol !== "undefined" && "observable" in Symbol ? Symbol.observable : "@@observable";
var Observable = class {
constructor(subscribe) {
this._subscribe = subscribe;
}
subscribe(x4, error, complete) {
return this._subscribe(!x4 || typeof x4 === "function" ? { next: x4, error, complete } : x4);
}
[symbolObservable]() {
return this;
}
};
function extendObservabilitySet(target, newSet) {
keys(newSet).forEach((part) => {
const rangeSet = target[part] || (target[part] = new RangeSet());
mergeRanges(rangeSet, newSet[part]);
});
return target;
}
function liveQuery(querier) {
return new Observable((observer) => {
const scopeFuncIsAsync = isAsyncFunction(querier);
function execute(subscr) {
if (scopeFuncIsAsync) {
incrementExpectedAwaits();
}
const exec = () => newScope(querier, { subscr, trans: null });
const rv = PSD.trans ? usePSD(PSD.transless, exec) : exec();
if (scopeFuncIsAsync) {
rv.then(decrementExpectedAwaits, decrementExpectedAwaits);
}
return rv;
}
let closed = false;
let accumMuts = {};
let currentObs = {};
const subscription = {
get closed() {
return closed;
},
unsubscribe: () => {
closed = true;
globalEvents.storagemutated.unsubscribe(mutationListener);
}
};
observer.start && observer.start(subscription);
let querying = false, startedListening = false;
function shouldNotify() {
return keys(currentObs).some((key) => accumMuts[key] && rangesOverlap(accumMuts[key], currentObs[key]));
}
const mutationListener = (parts) => {
extendObservabilitySet(accumMuts, parts);
if (shouldNotify()) {
doQuery();
}
};
const doQuery = () => {
if (querying || closed)
return;
accumMuts = {};
const subscr = {};
const ret = execute(subscr);
if (!startedListening) {
globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, mutationListener);
startedListening = true;
}
querying = true;
Promise.resolve(ret).then((result) => {
querying = false;
if (closed)
return;
if (shouldNotify()) {
doQuery();
} else {
accumMuts = {};
currentObs = subscr;
observer.next && observer.next(result);
}
}, (err) => {
querying = false;
observer.error && observer.error(err);
subscription.unsubscribe();
});
};
doQuery();
return subscription;
});
}
var domDeps;
try {
domDeps = {
indexedDB: _global.indexedDB || _global.mozIndexedDB || _global.webkitIndexedDB || _global.msIndexedDB,
IDBKeyRange: _global.IDBKeyRange || _global.webkitIDBKeyRange
};
} catch (e3) {
domDeps = { indexedDB: null, IDBKeyRange: null };
}
var Dexie = Dexie$1;
props(Dexie, {
...fullNameExceptions,
delete(databaseName) {
const db = new Dexie(databaseName, { addons: [] });
return db.delete();
},
exists(name) {
return new Dexie(name, { addons: [] }).open().then((db) => {
db.close();
return true;
}).catch("NoSuchDatabaseError", () => false);
},
getDatabaseNames(cb) {
try {
return getDatabaseNames(Dexie.dependencies).then(cb);
} catch (_a) {
return rejection(new exceptions.MissingAPI());
}
},
defineClass() {
function Class(content) {
extend(this, content);
}
return Class;
},
ignoreTransaction(scopeFunc) {
return PSD.trans ? usePSD(PSD.transless, scopeFunc) : scopeFunc();
},
vip,
async: function(generatorFn) {
return function() {
try {
var rv = awaitIterator(generatorFn.apply(this, arguments));
if (!rv || typeof rv.then !== "function")
return DexiePromise.resolve(rv);
return rv;
} catch (e3) {
return rejection(e3);
}
};
},
spawn: function(generatorFn, args, thiz) {
try {
var rv = awaitIterator(generatorFn.apply(thiz, args || []));
if (!rv || typeof rv.then !== "function")
return DexiePromise.resolve(rv);
return rv;
} catch (e3) {
return rejection(e3);
}
},
currentTransaction: {
get: () => PSD.trans || null
},
waitFor: function(promiseOrFunction, optionalTimeout) {
const promise = DexiePromise.resolve(typeof promiseOrFunction === "function" ? Dexie.ignoreTransaction(promiseOrFunction) : promiseOrFunction).timeout(optionalTimeout || 6e4);
return PSD.trans ? PSD.trans.waitFor(promise) : promise;
},
Promise: DexiePromise,
debug: {
get: () => debug,
set: (value) => {
setDebug(value, value === "dexie" ? () => true : dexieStackFrameFilter);
}
},
derive,
extend,
props,
override,
Events,
on: globalEvents,
liveQuery,
extendObservabilitySet,
getByKeyPath,
setByKeyPath,
delByKeyPath,
shallowClone,
deepClone,
getObjectDiff,
cmp,
asap: asap$1,
minKey,
addons: [],
connections,
errnames,
dependencies: domDeps,
semVer: DEXIE_VERSION,
version: DEXIE_VERSION.split(".").map((n3) => parseInt(n3)).reduce((p3, c4, i4) => p3 + c4 / Math.pow(10, i4 * 2))
});
Dexie.maxKey = getMaxKey(Dexie.dependencies.IDBKeyRange);
if (typeof dispatchEvent !== "undefined" && typeof addEventListener !== "undefined") {
globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, (updatedParts) => {
if (!propagatingLocally) {
let event;
if (isIEOrEdge) {
event = document.createEvent("CustomEvent");
event.initCustomEvent(STORAGE_MUTATED_DOM_EVENT_NAME, true, true, updatedParts);
} else {
event = new CustomEvent(STORAGE_MUTATED_DOM_EVENT_NAME, {
detail: updatedParts
});
}
propagatingLocally = true;
dispatchEvent(event);
propagatingLocally = false;
}
});
addEventListener(STORAGE_MUTATED_DOM_EVENT_NAME, ({ detail }) => {
if (!propagatingLocally) {
propagateLocally(detail);
}
});
}
function propagateLocally(updateParts) {
let wasMe = propagatingLocally;
try {
propagatingLocally = true;
globalEvents.storagemutated.fire(updateParts);
} finally {
propagatingLocally = wasMe;
}
}
var propagatingLocally = false;
if (typeof BroadcastChannel !== "undefined") {
const bc = new BroadcastChannel(STORAGE_MUTATED_DOM_EVENT_NAME);
if (typeof bc.unref === "function") {
bc.unref();
}
globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, (changedParts) => {
if (!propagatingLocally) {
bc.postMessage(changedParts);
}
});
bc.onmessage = (ev) => {
if (ev.data)
propagateLocally(ev.data);
};
} else if (typeof self !== "undefined" && typeof navigator !== "undefined") {
globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, (changedParts) => {
try {
if (!propagatingLocally) {
if (typeof localStorage !== "undefined") {
localStorage.setItem(STORAGE_MUTATED_DOM_EVENT_NAME, JSON.stringify({
trig: Math.random(),
changedParts
}));
}
if (typeof self["clients"] === "object") {
[...self["clients"].matchAll({ includeUncontrolled: true })].forEach((client) => client.postMessage({
type: STORAGE_MUTATED_DOM_EVENT_NAME,
changedParts
}));
}
}
} catch (_a) {
}
});
if (typeof addEventListener !== "undefined") {
addEventListener("storage", (ev) => {
if (ev.key === STORAGE_MUTATED_DOM_EVENT_NAME) {
const data = JSON.parse(ev.newValue);
if (data)
propagateLocally(data.changedParts);
}
});
}
const swContainer = self.document && navigator.serviceWorker;
if (swContainer) {
swContainer.addEventListener("message", propagateMessageLocally);
}
}
function propagateMessageLocally({ data }) {
if (data && data.type === STORAGE_MUTATED_DOM_EVENT_NAME) {
propagateLocally(data.changedParts);
}
}
DexiePromise.rejectionMapper = mapError;
setDebug(debug, dexieStackFrameFilter);
// src/utils.ts
var import_msgreader = __toESM(require_msgreader());
var import_obsidian = require("obsidian");
// node_modules/js-base64/base64.mjs
var version = "3.7.5";
var VERSION = version;
var _hasatob = typeof atob === "function";
var _hasbtoa = typeof btoa === "function";
var _hasBuffer = typeof Buffer === "function";
var _TD = typeof TextDecoder === "function" ? new TextDecoder() : void 0;
var _TE = typeof TextEncoder === "function" ? new TextEncoder() : void 0;
var b64ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var b64chs = Array.prototype.slice.call(b64ch);
var b64tab = ((a3) => {
let tab = {};
a3.forEach((c4, i4) => tab[c4] = i4);
return tab;
})(b64chs);
var b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
var _fromCC = String.fromCharCode.bind(String);
var _U8Afrom = typeof Uint8Array.from === "function" ? Uint8Array.from.bind(Uint8Array) : (it) => new Uint8Array(Array.prototype.slice.call(it, 0));
var _mkUriSafe = (src) => src.replace(/=/g, "").replace(/[+\/]/g, (m0) => m0 == "+" ? "-" : "_");
var _tidyB64 = (s4) => s4.replace(/[^A-Za-z0-9\+\/]/g, "");
var btoaPolyfill = (bin) => {
let u32, c0, c1, c22, asc = "";
const pad2 = bin.length % 3;
for (let i4 = 0; i4 < bin.length; ) {
if ((c0 = bin.charCodeAt(i4++)) > 255 || (c1 = bin.charCodeAt(i4++)) > 255 || (c22 = bin.charCodeAt(i4++)) > 255)
throw new TypeError("invalid character found");
u32 = c0 << 16 | c1 << 8 | c22;
asc += b64chs[u32 >> 18 & 63] + b64chs[u32 >> 12 & 63] + b64chs[u32 >> 6 & 63] + b64chs[u32 & 63];
}
return pad2 ? asc.slice(0, pad2 - 3) + "===".substring(pad2) : asc;
};
var _btoa = _hasbtoa ? (bin) => btoa(bin) : _hasBuffer ? (bin) => Buffer.from(bin, "binary").toString("base64") : btoaPolyfill;
var _fromUint8Array = _hasBuffer ? (u8a) => Buffer.from(u8a).toString("base64") : (u8a) => {
const maxargs = 4096;
let strs = [];
for (let i4 = 0, l3 = u8a.length; i4 < l3; i4 += maxargs) {
strs.push(_fromCC.apply(null, u8a.subarray(i4, i4 + maxargs)));
}
return _btoa(strs.join(""));
};
var fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);
var cb_utob = (c4) => {
if (c4.length < 2) {
var cc = c4.charCodeAt(0);
return cc < 128 ? c4 : cc < 2048 ? _fromCC(192 | cc >>> 6) + _fromCC(128 | cc & 63) : _fromCC(224 | cc >>> 12 & 15) + _fromCC(128 | cc >>> 6 & 63) + _fromCC(128 | cc & 63);
} else {
var cc = 65536 + (c4.charCodeAt(0) - 55296) * 1024 + (c4.charCodeAt(1) - 56320);
return _fromCC(240 | cc >>> 18 & 7) + _fromCC(128 | cc >>> 12 & 63) + _fromCC(128 | cc >>> 6 & 63) + _fromCC(128 | cc & 63);
}
};
var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
var utob = (u3) => u3.replace(re_utob, cb_utob);
var _encode = _hasBuffer ? (s4) => Buffer.from(s4, "utf8").toString("base64") : _TE ? (s4) => _fromUint8Array(_TE.encode(s4)) : (s4) => _btoa(utob(s4));
var encode = (src, urlsafe = false) => urlsafe ? _mkUriSafe(_encode(src)) : _encode(src);
var encodeURI = (src) => encode(src, true);
var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g;
var cb_btou = (cccc) => {
switch (cccc.length) {
case 4:
var cp = (7 & cccc.charCodeAt(0)) << 18 | (63 & cccc.charCodeAt(1)) << 12 | (63 & cccc.charCodeAt(2)) << 6 | 63 & cccc.charCodeAt(3), offset = cp - 65536;
return _fromCC((offset >>> 10) + 55296) + _fromCC((offset & 1023) + 56320);
case 3:
return _fromCC((15 & cccc.charCodeAt(0)) << 12 | (63 & cccc.charCodeAt(1)) << 6 | 63 & cccc.charCodeAt(2));
default:
return _fromCC((31 & cccc.charCodeAt(0)) << 6 | 63 & cccc.charCodeAt(1));
}
};
var btou = (b3) => b3.replace(re_btou, cb_btou);
var atobPolyfill = (asc) => {
asc = asc.replace(/\s+/g, "");
if (!b64re.test(asc))
throw new TypeError("malformed base64.");
asc += "==".slice(2 - (asc.length & 3));
let u24, bin = "", r1, r22;
for (let i4 = 0; i4 < asc.length; ) {
u24 = b64tab[asc.charAt(i4++)] << 18 | b64tab[asc.charAt(i4++)] << 12 | (r1 = b64tab[asc.charAt(i4++)]) << 6 | (r22 = b64tab[asc.charAt(i4++)]);
bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) : r22 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);
}
return bin;
};
var _atob = _hasatob ? (asc) => atob(_tidyB64(asc)) : _hasBuffer ? (asc) => Buffer.from(asc, "base64").toString("binary") : atobPolyfill;
var _toUint8Array = _hasBuffer ? (a3) => _U8Afrom(Buffer.from(a3, "base64")) : (a3) => _U8Afrom(_atob(a3).split("").map((c4) => c4.charCodeAt(0)));
var toUint8Array = (a3) => _toUint8Array(_unURI(a3));
var _decode = _hasBuffer ? (a3) => Buffer.from(a3, "base64").toString("utf8") : _TD ? (a3) => _TD.decode(_toUint8Array(a3)) : (a3) => btou(_atob(a3));
var _unURI = (a3) => _tidyB64(a3.replace(/[-_]/g, (m0) => m0 == "-" ? "+" : "/"));
var decode = (src) => _decode(_unURI(src));
var isValid = (src) => {
if (typeof src !== "string")
return false;
const s4 = src.replace(/\s+/g, "").replace(/={0,2}$/, "");
return !/[^\s0-9a-zA-Z\+/]/.test(s4) || !/[^\s0-9a-zA-Z\-_]/.test(s4);
};
var _noEnum = (v3) => {
return {
value: v3,
enumerable: false,
writable: true,
configurable: true
};
};
var extendString = function() {
const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));
_add("fromBase64", function() {
return decode(this);
});
_add("toBase64", function(urlsafe) {
return encode(this, urlsafe);
});
_add("toBase64URI", function() {
return encode(this, true);
});
_add("toBase64URL", function() {
return encode(this, true);
});
_add("toUint8Array", function() {
return toUint8Array(this);
});
};
var extendUint8Array = function() {
const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));
_add("toBase64", function(urlsafe) {
return fromUint8Array(this, urlsafe);
});
_add("toBase64URI", function() {
return fromUint8Array(this, true);
});
_add("toBase64URL", function() {
return fromUint8Array(this, true);
});
};
var extendBuiltins = () => {
extendString();
extendUint8Array();
};
var gBase64 = {
version,
VERSION,
atob: _atob,
atobPolyfill,
btoa: _btoa,
btoaPolyfill,
fromBase64: decode,
toBase64: encode,
encode,
encodeURI,
encodeURL: encodeURI,
utob,
btou,
decode,
isValid,
fromUint8Array,
toUint8Array,
extendString,
extendUint8Array,
extendBuiltins
};
// node_modules/eml-parse-js/lib/bundle.esm.js
var import_text_encoding = __toESM(require_text_encoding());
var encode2 = function(str, fromCharset) {
if (fromCharset === void 0) {
fromCharset = "utf-8";
}
return new import_text_encoding.TextEncoder(fromCharset).encode(str);
};
var arr2str = function(arr) {
var CHUNK_SZ = 32768;
var strs = [];
for (var i4 = 0; i4 < arr.length; i4 += CHUNK_SZ) {
strs.push(String.fromCharCode.apply(null, arr.subarray(i4, i4 + CHUNK_SZ)));
}
return strs.join("");
};
function decode2(buf, fromCharset) {
if (fromCharset === void 0) {
fromCharset = "utf-8";
}
var charsets = [
{ charset: normalizeCharset(fromCharset), fatal: false },
{ charset: "utf-8", fatal: true },
{ charset: "iso-8859-15", fatal: false }
];
for (var _i = 0, charsets_1 = charsets; _i < charsets_1.length; _i++) {
var _a = charsets_1[_i], charset = _a.charset, fatal = _a.fatal;
try {
return new import_text_encoding.TextDecoder(charset, { fatal }).decode(buf);
} catch (e3) {
}
}
return arr2str(buf);
}
var convert = function(data, fromCharset) {
return typeof data === "string" ? encode2(data) : encode2(decode2(data, fromCharset));
};
function normalizeCharset(charset) {
if (charset === void 0) {
charset = "utf-8";
}
var match;
if (match = charset.match(/^utf[-_]?(\d+)$/i)) {
return "UTF-" + match[1];
}
if (match = charset.match(/^win[-_]?(\d+)$/i)) {
return "WINDOWS-" + match[1];
}
if (match = charset.match(/^latin[-_]?(\d+)$/i)) {
return "ISO-8859-" + match[1];
}
return charset;
}
function getCharsetName(charset) {
return charset.toLowerCase().replace(/[^0-9a-z]/g, "");
}
function guid() {
return "xxxxxxxxxxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c4) {
var r3 = Math.random() * 16 | 0, v3 = c4 == "x" ? r3 : r3 & 3 | 8;
return v3.toString(16);
}).replace("-", "");
}
function wrap2(s4, i4) {
var a3 = [];
do {
a3.push(s4.substring(0, i4));
} while ((s4 = s4.substring(i4, s4.length)) != "");
return a3.join("\r\n");
}
function mimeDecode(str, fromCharset) {
if (str === void 0) {
str = "";
}
if (fromCharset === void 0) {
fromCharset = "UTF-8";
}
var encodedBytesCount = (str.match(/=[\da-fA-F]{2}/g) || []).length;
var buffer = new Uint8Array(str.length - encodedBytesCount * 2);
for (var i4 = 0, len = str.length, bufferPos = 0; i4 < len; i4++) {
var hex = str.substr(i4 + 1, 2);
var chr = str.charAt(i4);
if (chr === "=" && hex && /[\da-fA-F]{2}/.test(hex)) {
buffer[bufferPos++] = parseInt(hex, 16);
i4 += 2;
} else {
buffer[bufferPos++] = chr.charCodeAt(0);
}
}
return decode2(buffer, fromCharset);
}
var GB2312UTF8 = {
Dig2Dec: function(s) {
var retV = 0;
if (s.length == 4) {
for (var i = 0; i < 4; i++) {
retV += eval(s.charAt(i)) * Math.pow(2, 3 - i);
}
return retV;
}
return -1;
},
Hex2Utf8: function(s) {
var retS = "";
var tempS = "";
var ss = "";
if (s.length == 16) {
tempS = "1110" + s.substring(0, 4);
tempS += "10" + s.substring(4, 10);
tempS += "10" + s.substring(10, 16);
var sss = "0123456789ABCDEF";
for (var i = 0; i < 3; i++) {
retS += "%";
ss = tempS.substring(i * 8, (eval(i.toString()) + 1) * 8);
retS += sss.charAt(this.Dig2Dec(ss.substring(0, 4)));
retS += sss.charAt(this.Dig2Dec(ss.substring(4, 8)));
}
return retS;
}
return "";
},
Dec2Dig: function(n1) {
var s4 = "";
var n22 = 0;
for (var i4 = 0; i4 < 4; i4++) {
n22 = Math.pow(2, 3 - i4);
if (n1 >= n22) {
s4 += "1";
n1 = n1 - n22;
} else {
s4 += "0";
}
}
return s4;
},
Str2Hex: function(s) {
var c = "";
var n;
var ss = "0123456789ABCDEF";
var digS = "";
for (var i = 0; i < s.length; i++) {
c = s.charAt(i);
n = ss.indexOf(c);
digS += this.Dec2Dig(eval(n.toString()));
}
return digS;
},
GB2312ToUTF8: function(s1) {
var s4 = escape(s1);
var sa = s4.split("%");
var retV2 = "";
if (sa[0] != "") {
retV2 = sa[0];
}
for (var i4 = 1; i4 < sa.length; i4++) {
if (sa[i4].substring(0, 1) == "u") {
retV2 += this.Hex2Utf8(this.Str2Hex(sa[i4].substring(1, 5)));
if (sa[i4].length) {
retV2 += sa[i4].substring(5);
}
} else {
retV2 += unescape("%" + sa[i4]);
if (sa[i4].length) {
retV2 += sa[i4].substring(5);
}
}
}
return retV2;
},
UTF8ToGB2312: function(str1) {
var substr = "";
var a3 = "";
var b3 = "";
var c4 = "";
var i4 = -1;
i4 = str1.indexOf("%");
if (i4 == -1) {
return str1;
}
while (i4 != -1) {
if (i4 < 3) {
substr = substr + str1.substr(0, i4 - 1);
str1 = str1.substr(i4 + 1, str1.length - i4);
a3 = str1.substr(0, 2);
str1 = str1.substr(2, str1.length - 2);
if ((parseInt("0x" + a3) & 128) === 0) {
substr = substr + String.fromCharCode(parseInt("0x" + a3));
} else if ((parseInt("0x" + a3) & 224) === 192) {
b3 = str1.substr(1, 2);
str1 = str1.substr(3, str1.length - 3);
var widechar = (parseInt("0x" + a3) & 31) << 6;
widechar = widechar | parseInt("0x" + b3) & 63;
substr = substr + String.fromCharCode(widechar);
} else {
b3 = str1.substr(1, 2);
str1 = str1.substr(3, str1.length - 3);
c4 = str1.substr(1, 2);
str1 = str1.substr(3, str1.length - 3);
var widechar = (parseInt("0x" + a3) & 15) << 12;
widechar = widechar | (parseInt("0x" + b3) & 63) << 6;
widechar = widechar | parseInt("0x" + c4) & 63;
substr = substr + String.fromCharCode(widechar);
}
} else {
substr = substr + str1.substring(0, i4);
str1 = str1.substring(i4);
}
i4 = str1.indexOf("%");
}
return substr + str1;
}
};
var verbose = false;
var defaultCharset = "utf-8";
function createBoundary() {
return "----=" + guid();
}
function toEmailAddress(data) {
var email = "";
if (typeof data === "undefined")
;
else if (typeof data === "string") {
email = data;
} else if (typeof data === "object") {
if (Array.isArray(data)) {
email += data.map(function(item) {
var str = "";
if (item.name) {
str += '"' + item.name.replace(/^"|"\s*$/g, "") + '" ';
}
if (item.email) {
str += "<" + item.email + ">";
}
return str;
}).filter(function(a3) {
return a3;
}).join(", ");
} else {
if (data) {
if (data.name) {
email += '"' + data.name.replace(/^"|"\s*$/g, "") + '" ';
}
if (data.email) {
email += "<" + data.email + ">";
}
}
}
}
return email;
}
function getBoundary(contentType) {
var match = /boundary="?(.+?)"?(\s*;[\s\S]*)?$/g.exec(contentType);
return match ? match[1] : void 0;
}
function getCharset(contentType) {
var match = /charset\s*=\W*([\w\-]+)/g.exec(contentType);
return match ? match[1] : void 0;
}
function getEmailAddress(raw) {
var list = [];
var parts = raw.match(/('[^']*')|[^,]+/g);
if (!parts) {
return list;
}
for (var i4 = 0; i4 < parts.length; i4++) {
var address = {
name: "",
email: ""
};
var partsStr = unquoteString(parts[i4]);
if (/^'.*'$/g.test(partsStr)) {
address.name = partsStr.replace(/'/g, "").trim();
i4++;
}
var regex = /^(.*?)(\s*\<(.*?)\>)$/g;
var match = regex.exec(partsStr);
if (match) {
var name = match[1].replace(/'/g, "").trim();
if (name && name.length) {
address.name = name;
}
address.email = match[3].trim();
list.push(address);
} else {
address.email = partsStr.trim();
list.push(address);
}
}
if (list.length === 0) {
return null;
}
if (list.length === 1) {
return list[0];
}
return list;
}
function decodeJoint(str) {
var match = /=\?([^?]+)\?(B|Q)\?(.+?)(\?=)/gi.exec(str);
if (match) {
var charset = getCharsetName(match[1] || defaultCharset);
var type2 = match[2].toUpperCase();
var value = match[3];
if (type2 === "B") {
if (charset === "utf8") {
return decode2(encode2(gBase64.fromBase64(value.replace(/\r?\n/g, ""))), "utf8");
} else {
return decode2(gBase64.toUint8Array(value.replace(/\r?\n/g, "")), charset);
}
} else if (type2 === "Q") {
return unquotePrintable(value, charset, true);
}
}
return str;
}
function unquoteString(str) {
var regex = /=\?([^?]+)\?(B|Q)\?(.+?)(\?=)/gi;
var decodedString = str || "";
var spinOffMatch = decodedString.match(regex);
if (spinOffMatch) {
spinOffMatch.forEach(function(spin) {
decodedString = decodedString.replace(spin, decodeJoint(spin));
});
}
return decodedString.replace(/\r?\n/g, "");
}
function unquotePrintable(value, charset, qEncoding) {
if (qEncoding === void 0) {
qEncoding = false;
}
var rawString = value.replace(/[\t ]+$/gm, "").replace(/=(?:\r?\n|$)/g, "");
if (qEncoding) {
rawString = rawString.replace(/_/g, decode2(new Uint8Array([32]), charset));
}
return mimeDecode(rawString, charset);
}
function parse(eml, options, callback) {
if (typeof options === "function" && typeof callback === "undefined") {
callback = options;
options = null;
}
if (typeof options !== "object") {
options = { headersOnly: false };
}
var error;
var result = {};
try {
if (typeof eml !== "string") {
throw new Error('Argument "eml" expected to be string!');
}
var lines = eml.split(/\r?\n/);
result = parseRecursive(lines, 0, result, options);
} catch (e3) {
error = e3;
}
callback && callback(error, result);
return error || result || new Error("read EML failed!");
}
function parseRecursive(lines, start, parent, options) {
var _a, _b, _c;
var boundary = null;
var lastHeaderName = "";
var findBoundary = "";
var insideBody = false;
var insideBoundary = false;
var isMultiHeader = false;
var isMultipart = false;
parent.headers = {};
function complete(boundary2) {
boundary2.part = {};
parseRecursive(boundary2.lines, 0, boundary2.part, options);
delete boundary2.lines;
}
for (var i4 = start; i4 < lines.length; i4++) {
var line = lines[i4];
if (!insideBody) {
if (line == "") {
insideBody = true;
if (options && options.headersOnly) {
break;
}
var ct = parent.headers["Content-Type"];
if (ct && /^multipart\//g.test(ct)) {
var b3 = getBoundary(ct);
if (b3 && b3.length) {
findBoundary = b3;
isMultipart = true;
parent.body = [];
}
}
continue;
}
var match = /^\s+([^\r\n]+)/g.exec(line);
if (match) {
if (isMultiHeader) {
parent.headers[lastHeaderName][parent.headers[lastHeaderName].length - 1] += "\r\n" + match[1];
} else {
parent.headers[lastHeaderName] += "\r\n" + match[1];
}
continue;
}
match = /^([\w\d\-]+):\s*([^\r\n]*)/gi.exec(line);
if (match) {
lastHeaderName = match[1];
if (parent.headers[lastHeaderName]) {
isMultiHeader = true;
if (typeof parent.headers[lastHeaderName] == "string") {
parent.headers[lastHeaderName] = [parent.headers[lastHeaderName]];
}
parent.headers[lastHeaderName].push(match[2]);
} else {
isMultiHeader = false;
parent.headers[lastHeaderName] = match[2];
}
continue;
}
} else {
if (isMultipart) {
if (line.indexOf("--" + findBoundary) == 0 && !/\-\-(\r?\n)?$/g.test(line)) {
insideBoundary = true;
if (boundary && boundary.lines) {
complete(boundary);
}
var match = /^\-\-([^\r\n]+)(\r?\n)?$/g.exec(line);
boundary = { boundary: match[1], lines: [] };
parent.body.push(boundary);
continue;
}
if (insideBoundary) {
if (((_a = boundary) === null || _a === void 0 ? void 0 : _a.boundary) && lines[i4 - 1] == "" && line.indexOf("--" + findBoundary + "--") == 0) {
insideBoundary = false;
complete(boundary);
continue;
}
if (((_b = boundary) === null || _b === void 0 ? void 0 : _b.boundary) && line.indexOf("--" + findBoundary + "--") == 0) {
continue;
}
(_c = boundary) === null || _c === void 0 ? void 0 : _c.lines.push(line);
}
} else {
parent.body = lines.splice(i4).join("\r\n");
break;
}
}
}
if (parent.body && parent.body.length && parent.body[parent.body.length - 1].lines) {
complete(parent.body[parent.body.length - 1]);
}
return parent;
}
function completeBoundary(boundary) {
if (!boundary || !boundary.boundary) {
return null;
}
var lines = boundary.lines || [];
var result = {
boundary: boundary.boundary,
part: {
headers: {}
}
};
var lastHeaderName = "";
var insideBody = false;
var childBoundary;
for (var index = 0; index < lines.length; index++) {
var line = lines[index];
if (!insideBody) {
if (line === "") {
insideBody = true;
continue;
}
var match = /^([\w\d\-]+):\s*([^\r\n]*)/gi.exec(line);
if (match) {
lastHeaderName = match[1];
result.part.headers[lastHeaderName] = match[2];
continue;
}
var lineMatch = /^\s+([^\r\n]+)/g.exec(line);
if (lineMatch) {
result.part.headers[lastHeaderName] += "\r\n" + lineMatch[1];
continue;
}
} else {
var match = /^\-\-([^\r\n]+)(\r?\n)?$/g.exec(line);
var childBoundaryStr = getBoundary(result.part.headers["Content-Type"] || result.part.headers["Content-type"]);
if (match && line.indexOf("--" + childBoundaryStr) === 0 && !childBoundary) {
childBoundary = { boundary: match ? match[1] : "", lines: [] };
continue;
} else if (!!childBoundary && childBoundary.boundary) {
if (lines[index - 1] === "" && line.indexOf("--" + childBoundary.boundary) === 0) {
var child = completeBoundary(childBoundary);
if (child) {
if (Array.isArray(result.part.body)) {
result.part.body.push(child);
} else {
result.part.body = [child];
}
} else {
result.part.body = childBoundary.lines.join("\r\n");
}
if (!!lines[index + 1]) {
childBoundary.lines = [];
continue;
}
if (line.indexOf("--" + childBoundary.boundary + "--") === 0 && lines[index + 1] === "") {
childBoundary = void 0;
break;
}
}
childBoundary.lines.push(line);
} else {
result.part.body = lines.splice(index).join("\r\n");
break;
}
}
}
return result;
}
function build(data, options, callback) {
if (typeof options === "function" && typeof callback === "undefined") {
callback = options;
options = null;
}
var error;
var eml = "";
var EOL = "\r\n";
try {
if (!data) {
throw new Error('Argument "data" expected to be an object! or string');
}
if (typeof data === "string") {
var readResult = read(data);
if (typeof readResult === "string") {
throw new Error(readResult);
} else if (readResult instanceof Error) {
throw readResult;
} else {
data = readResult;
}
}
if (!data.headers) {
throw new Error('Argument "data" expected to be has headers');
}
if (typeof data.subject === "string") {
data.headers["Subject"] = data.subject;
}
if (typeof data.from !== "undefined") {
data.headers["From"] = toEmailAddress(data.from);
}
if (typeof data.to !== "undefined") {
data.headers["To"] = toEmailAddress(data.to);
}
if (typeof data.cc !== "undefined") {
data.headers["Cc"] = toEmailAddress(data.cc);
}
var emlBoundary = getBoundary(data.headers["Content-Type"] || data.headers["Content-type"] || "");
var hasBoundary = false;
var boundary = createBoundary();
var multipartBoundary = "";
if (data.multipartAlternative) {
multipartBoundary = "" + (getBoundary(data.multipartAlternative["Content-Type"]) || "");
hasBoundary = true;
}
if (emlBoundary) {
boundary = emlBoundary;
hasBoundary = true;
} else {
data.headers["Content-Type"] = data.headers["Content-type"] || "multipart/mixed;" + EOL + 'boundary="' + boundary + '"';
}
var keys2 = Object.keys(data.headers);
for (var i4 = 0; i4 < keys2.length; i4++) {
var key = keys2[i4];
var value = data.headers[key];
if (typeof value === "undefined") {
continue;
} else if (typeof value === "string") {
eml += key + ": " + value.replace(/\r?\n/g, EOL + " ") + EOL;
} else {
for (var j4 = 0; j4 < value.length; j4++) {
eml += key + ": " + value[j4].replace(/\r?\n/g, EOL + " ") + EOL;
}
}
}
if (data.multipartAlternative) {
eml += EOL;
eml += "--" + emlBoundary + EOL;
eml += "Content-Type: " + data.multipartAlternative["Content-Type"].replace(/\r?\n/g, EOL + " ") + EOL;
}
eml += EOL;
if (data.text) {
if (typeof options === "object" && !!options && options.encode && data.textheaders) {
eml += "--" + boundary + EOL;
for (var key in data.textheaders) {
if (data.textheaders.hasOwnProperty(key)) {
eml += key + ": " + data.textheaders[key].replace(/\r?\n/g, EOL + " ");
}
}
} else if (hasBoundary) {
eml += "--" + (multipartBoundary ? multipartBoundary : boundary) + EOL;
eml += 'Content-Type: text/plain; charset="utf-8"' + EOL;
}
eml += EOL + data.text;
eml += EOL;
}
if (data.html) {
if (typeof options === "object" && !!options && options.encode && data.textheaders) {
eml += "--" + boundary + EOL;
for (var key in data.textheaders) {
if (data.textheaders.hasOwnProperty(key)) {
eml += key + ": " + data.textheaders[key].replace(/\r?\n/g, EOL + " ");
}
}
} else if (hasBoundary) {
eml += "--" + (multipartBoundary ? multipartBoundary : boundary) + EOL;
eml += 'Content-Type: text/html; charset="utf-8"' + EOL;
}
if (verbose) {
console.info("line 765 " + hasBoundary + ", emlBoundary: " + emlBoundary + ", multipartBoundary: " + multipartBoundary + ", boundary: " + boundary);
}
eml += EOL + data.html;
eml += EOL;
}
if (data.attachments) {
for (var i4 = 0; i4 < data.attachments.length; i4++) {
var attachment = data.attachments[i4];
eml += "--" + boundary + EOL;
eml += "Content-Type: " + (attachment.contentType.replace(/\r?\n/g, EOL + " ") || "application/octet-stream") + EOL;
eml += "Content-Transfer-Encoding: base64" + EOL;
eml += "Content-Disposition: " + (attachment.inline ? "inline" : "attachment") + '; filename="' + (attachment.filename || attachment.name || "attachment_" + (i4 + 1)) + '"' + EOL;
if (attachment.cid) {
eml += "Content-ID: <" + attachment.cid + ">" + EOL;
}
eml += EOL;
if (typeof attachment.data === "string") {
var content = gBase64.toBase64(attachment.data);
eml += wrap2(content, 72) + EOL;
} else {
var content = decode2(attachment.data);
eml += wrap2(content, 72) + EOL;
}
eml += EOL;
}
}
if (hasBoundary) {
eml += "--" + boundary + "--" + EOL;
}
} catch (e3) {
error = e3;
}
callback && callback(error, eml);
return error || eml;
}
function read(eml, options, callback) {
if (typeof options === "function" && typeof callback === "undefined") {
callback = options;
options = null;
}
var error;
var result;
function _append(headers, content, result2) {
var contentType = headers["Content-Type"] || headers["Content-type"];
var contentDisposition = headers["Content-Disposition"];
var charset = getCharsetName(getCharset(contentType) || defaultCharset);
var encoding = headers["Content-Transfer-Encoding"] || headers["Content-transfer-encoding"];
if (typeof encoding === "string") {
encoding = encoding.toLowerCase();
}
if (encoding === "base64") {
if (contentType && contentType.indexOf("gbk") >= 0) {
content = encode2(GB2312UTF8.GB2312ToUTF8(content.replace(/\r?\n/g, "")));
} else {
content = encode2(content.replace(/\r?\n/g, ""));
}
} else if (encoding === "quoted-printable") {
content = unquotePrintable(content, charset);
} else if (encoding && charset !== "utf8" && encoding.search(/binary|8bit/) === 0) {
content = decode2(content, charset);
}
if (!contentDisposition && contentType && contentType.indexOf("text/html") >= 0) {
if (typeof content !== "string") {
content = decode2(content, charset);
}
var htmlContent = content.replace(/\r\n|(&quot;)/g, "").replace(/\"/g, '"');
try {
if (encoding === "base64") {
htmlContent = gBase64.decode(htmlContent);
} else if (gBase64.btoa(gBase64.atob(htmlContent)) == htmlContent) {
htmlContent = gBase64.atob(htmlContent);
}
} catch (error2) {
console.error(error2);
}
if (result2.html) {
result2.html += htmlContent;
} else {
result2.html = htmlContent;
}
result2.htmlheaders = {
"Content-Type": contentType,
"Content-Transfer-Encoding": encoding || ""
};
} else if (!contentDisposition && contentType && contentType.indexOf("text/plain") >= 0) {
if (typeof content !== "string") {
content = decode2(content, charset);
}
if (encoding === "base64") {
content = gBase64.decode(content);
}
if (result2.text) {
result2.text += content;
} else {
result2.text = content;
}
result2.textheaders = {
"Content-Type": contentType,
"Content-Transfer-Encoding": encoding || ""
};
} else {
if (!result2.attachments) {
result2.attachments = [];
}
var attachment = {};
var id = headers["Content-ID"] || headers["Content-Id"];
if (id) {
attachment.id = id;
}
var NameContainer = ["Content-Disposition", "Content-Type", "Content-type"];
var result_name = void 0;
for (var _i = 0, NameContainer_1 = NameContainer; _i < NameContainer_1.length; _i++) {
var key = NameContainer_1[_i];
var name = headers[key];
if (name) {
result_name = name.replace(/(\s|'|utf-8|\*[0-9]\*)/g, "").split(";").map(function(v3) {
return /name[\*]?="?(.+?)"?$/gi.exec(v3);
}).reduce(function(a3, b3) {
if (b3 && b3[1]) {
a3 += b3[1];
}
return a3;
}, "");
if (result_name) {
break;
}
}
}
if (result_name) {
attachment.name = decodeURI(result_name);
}
var ct = headers["Content-Type"] || headers["Content-type"];
if (ct) {
attachment.contentType = ct;
}
var cd = headers["Content-Disposition"];
if (cd) {
attachment.inline = /^\s*inline/g.test(cd);
}
attachment.data = content;
attachment.data64 = decode2(content, charset);
result2.attachments.push(attachment);
}
}
function _read(data) {
if (!data) {
return "no data";
}
try {
var result_1 = {};
if (!data.headers) {
throw new Error("data does't has headers");
}
if (data.headers["Date"]) {
result_1.date = new Date(data.headers["Date"]);
}
if (data.headers["Subject"]) {
result_1.subject = unquoteString(data.headers["Subject"]);
}
if (data.headers["From"]) {
result_1.from = getEmailAddress(data.headers["From"]);
}
if (data.headers["To"]) {
result_1.to = getEmailAddress(data.headers["To"]);
}
if (data.headers["CC"]) {
result_1.cc = getEmailAddress(data.headers["CC"]);
}
if (data.headers["Cc"]) {
result_1.cc = getEmailAddress(data.headers["Cc"]);
}
result_1.headers = data.headers;
var boundary = null;
var ct = data.headers["Content-Type"] || data.headers["Content-type"];
if (ct && /^multipart\//g.test(ct)) {
var b3 = getBoundary(ct);
if (b3 && b3.length) {
boundary = b3;
}
}
if (boundary && Array.isArray(data.body)) {
for (var i4 = 0; i4 < data.body.length; i4++) {
var boundaryBlock = data.body[i4];
if (!boundaryBlock) {
continue;
}
if (typeof boundaryBlock.part === "undefined") {
verbose && console.warn("Warning: undefined b.part");
} else if (typeof boundaryBlock.part === "string") {
result_1.data = boundaryBlock.part;
} else {
if (typeof boundaryBlock.part.body === "undefined") {
verbose && console.warn("Warning: undefined b.part.body");
} else if (typeof boundaryBlock.part.body === "string") {
_append(boundaryBlock.part.headers, boundaryBlock.part.body, result_1);
} else {
var currentHeaders = boundaryBlock.part.headers;
var currentHeadersContentType = currentHeaders["Content-Type"] || currentHeaders["Content-type"];
if (verbose) {
console.log("line 969 currentHeadersContentType: " + currentHeadersContentType);
}
if (currentHeadersContentType && currentHeadersContentType.indexOf("multipart") >= 0 && !result_1.multipartAlternative) {
result_1.multipartAlternative = {
"Content-Type": currentHeadersContentType
};
}
for (var j4 = 0; j4 < boundaryBlock.part.body.length; j4++) {
var selfBoundary = boundaryBlock.part.body[j4];
if (typeof selfBoundary === "string") {
result_1.data = selfBoundary;
continue;
}
var headers = selfBoundary.part.headers;
var content = selfBoundary.part.body;
if (Array.isArray(content)) {
content.forEach(function(bound) {
_append(bound.part.headers, bound.part.body, result_1);
});
} else {
_append(headers, content, result_1);
}
}
}
}
}
} else if (typeof data.body === "string") {
_append(data.headers, data.body, result_1);
}
return result_1;
} catch (e3) {
return e3;
}
}
if (typeof eml === "string") {
var parseResult = parse(eml, options);
if (typeof parseResult === "string" || parseResult instanceof Error) {
error = parseResult;
} else {
var readResult = _read(parseResult);
if (typeof readResult === "string" || readResult instanceof Error) {
error = readResult;
} else {
result = readResult;
}
}
} else if (typeof eml === "object") {
var readResult = _read(eml);
if (typeof readResult === "string" || readResult instanceof Error) {
error = readResult;
} else {
result = readResult;
}
} else {
error = new Error("Missing EML file content!");
}
callback && callback(error, result);
return error || result || new Error("read EML failed!");
}
// src/utils.ts
var import_dayjs = __toESM(require_dayjs_min());
var getMsgContent = async (params) => {
const { plugin, msgFile } = params;
if (msgFile.extension === "msg") {
let msgFileBuffer = await plugin.app.vault.readBinary(params.msgFile);
let msgReader = new import_msgreader.MSGReader(msgFileBuffer);
let fileData = msgReader.getFileData();
let creationTime = getMsgDate({ rawHeaders: fileData.headers });
return {
senderName: dataOrEmpty(fileData.senderName),
senderEmail: dataOrEmpty(fileData.senderEmail),
recipients: getCustomRecipients(fileData.recipients ? fileData.recipients : []),
creationTime: typeof creationTime === "string" ? creationTime : (0, import_dayjs.default)(creationTime).format("ddd, D MMM YYYY HH:mm:ss"),
subject: dataOrEmpty(fileData.subject),
body: dataOrEmpty(fileData.body),
attachments: extractMSGAttachments({
msgReader,
fileDataAttachments: fileData.attachments
})
};
} else if (msgFile.extension === "eml") {
let readedEmlJson = await readEmlFile({ emlFile: msgFile, plugin });
let sender = parseEmlSender({ senderText: readedEmlJson.headers.From });
return {
senderName: sender.senderName,
senderEmail: sender.senderEmail,
recipients: parseEMLRecipients({ readEmlJson: readedEmlJson }),
creationTime: (0, import_dayjs.default)(readedEmlJson.date).format("ddd, D MMM YYYY HH:mm:ss"),
subject: dataOrEmpty(readedEmlJson.subject),
body: cleanEMLBody({ text: readedEmlJson.text }),
attachments: extractEMLAttachments({ emlFileReadJson: readedEmlJson })
};
}
};
function parseHeaders(params) {
const { headers } = params;
var parsedHeaders = {};
if (!headers)
return parsedHeaders;
var headerRegEx = /(.*)\: (.*)/g;
let m3;
while (m3 = headerRegEx.exec(headers)) {
parsedHeaders[m3[1]] = m3[2];
}
return parsedHeaders;
}
function getMsgDate(params) {
const { rawHeaders } = params;
var headers = parseHeaders({ headers: rawHeaders });
if (!headers["Date"]) {
return "-";
}
return new Date(headers["Date"]);
}
var cleanEMLBody = (params) => {
if (!params.text)
return "";
let cleanTxt = params.text.replace(/\r\n\r\n/g, "\r\n\r\n \r\n\r\n");
const pattern = /\[cid:.*?\]/g;
return cleanTxt.replace(pattern, "");
};
var readEmlFile = async (params) => {
const { emlFile, plugin } = params;
let emlFileRead = await plugin.app.vault.read(emlFile);
return new Promise((resolve, reject) => {
read(emlFileRead, (err, ReadedEMLJson) => {
if (err) {
reject(err);
} else {
resolve(ReadedEMLJson);
}
});
});
};
var parseEmlSender = (params) => {
let { senderText } = params;
if (senderText === "" || senderText === void 0 || senderText === null) {
return { senderName: "", senderEmail: "" };
}
senderText = senderText.replace(/"/g, "");
const regex = /^([^<]+) <([^>]+)>$/;
const match = regex.exec(senderText);
if (!match)
return { senderName: "", senderEmail: "" };
const [, senderName, senderEmail] = match;
return { senderName, senderEmail };
};
var parseEMLRecipients = (params) => {
const { readEmlJson } = params;
let emlTo = dataOrEmpty(readEmlJson.headers.To);
let emlCC = dataOrEmpty(readEmlJson.headers.CC);
let recipientsText = emlTo + (emlCC === "" ? "" : ", " + emlCC);
let recipientsTextSplit = recipientsText.split(">,");
const regex = /"([^"]+)"\s*<?([^>\s]+)>?/;
let msgRecipients = [];
for (let recipientText of recipientsTextSplit) {
const match = recipientText.match(regex);
if (match) {
const name = match[1] || match[3];
const email = match[2] || match[4];
msgRecipients.push({ name, email });
}
}
return msgRecipients;
};
var extractMSGAttachments = (params) => {
const { msgReader, fileDataAttachments } = params;
let msgAttachments = [];
for (let [index, fileDataAttachment] of fileDataAttachments.entries()) {
let attRead = msgReader.getAttachment(index);
msgAttachments.push({
fileName: attRead.fileName,
fileExtension: fileDataAttachment.extension,
fileBase64: attRead.content ? uint8ArrayToBase64(attRead.content) : null
});
}
return msgAttachments;
};
var extractEMLAttachments = (params) => {
const { emlFileReadJson } = params;
if (emlFileReadJson.attachments && emlFileReadJson.attachments.length > 0) {
let attachments = [];
for (let attachment of params.emlFileReadJson.attachments) {
let fileNameParts = attachment.name.split(".");
let extension = fileNameParts[fileNameParts.length - 1];
attachments.push({
fileName: attachment.name,
fileExtension: "." + extension,
fileBase64: attachment.data64
});
}
return attachments;
} else {
return [];
}
};
var getCustomRecipients = (recipients) => {
if (recipients && recipients.length > 0) {
let customRecipients = [];
for (let recipient of recipients) {
customRecipients.push({
name: dataOrEmpty(recipient.name),
email: dataOrEmpty(recipient.email)
});
}
return customRecipients;
} else {
return [];
}
};
var dataOrEmpty = (data) => {
return data ? data : "";
};
var replaceNewLinesAndCarriages = (txt) => {
return txt == null ? void 0 : txt.replace(/[\r\n]+/g, "");
};
var getFileName = (filePath) => {
var index = filePath.lastIndexOf("/");
if (index !== -1)
return filePath.substring(index + 1);
return filePath;
};
var openFile = (params) => {
const { file, plugin, newLeaf, leafBySplit } = params;
let leaf = plugin.app.workspace.getLeaf(newLeaf);
if (!newLeaf && leafBySplit)
leaf = plugin.app.workspace.createLeafBySplit(leaf, "vertical");
plugin.app.workspace.setActiveLeaf(leaf, { focus: true });
leaf.openFile(file, { eState: { focus: true } });
};
var openFileInNewTab = (params) => {
openFile({ file: params.file, plugin: params.plugin, newLeaf: true });
};
function isMouseEvent(e3) {
return e3 && "screenX" in e3;
}
function base64ToArrayBuffer(base64) {
var binary_string = window.atob(base64);
var len = binary_string.length;
var bytes = new Uint8Array(len);
for (var i4 = 0; i4 < len; i4++) {
bytes[i4] = binary_string.charCodeAt(i4);
}
return bytes;
}
function uint8ArrayToBase64(uint8Array) {
return gBase64.fromUint8Array(uint8Array);
}
// src/database.ts
var import_fuzzysort = __toESM(require_fuzzysort());
var MsgHandlerDatabase = class extends Dexie$1 {
constructor() {
super("MsgHandlerDatabase");
this.version(1).stores({
dbMessageContents: "++id, senderName, senderEmail, recipients, subject, body, &filePath, mtime"
});
}
};
var pluginDb = new MsgHandlerDatabase();
var updateFilePathOfAllRecords = async (params) => {
const { oldValue, newValue } = params;
await pluginDb.dbMessageContents.where("filePath").equals(oldValue).modify({
filePath: newValue
});
};
var getAllDBMessageContents = async () => {
return await pluginDb.dbMessageContents.toArray();
};
var getDBMessageContentsByPath = async (params) => {
const { filePath } = params;
return await pluginDb.dbMessageContents.where("filePath").equals(filePath).toArray();
};
var createDBMessageContent = async (params) => {
const { msgContent, file } = params;
await pluginDb.dbMessageContents.add({
senderName: msgContent.senderName,
senderEmail: msgContent.senderEmail,
recipients: msgContent.recipients,
creationTime: msgContent.creationTime,
body: msgContent.body,
subject: msgContent.subject,
filePath: file.path,
mtime: file.stat.mtime
});
};
var deleteDBMessageContentById = async (params) => {
if (params.id) {
await pluginDb.dbMessageContents.delete(params.id);
}
};
var syncDatabaseWithVaultFiles = async (params) => {
const { plugin } = params;
let msgFiles = plugin.app.vault.getFiles().filter((f3) => plugin.acceptedExtensions.contains(f3.extension));
let dbMsgContents = await getAllDBMessageContents();
for (let dbMsgContent of dbMsgContents) {
if (!msgFiles.some((f3) => f3.path == dbMsgContent.filePath)) {
await deleteDBMessageContentById({ id: dbMsgContent.id });
}
}
for (let msgFile of msgFiles) {
if (!dbMsgContents.some((c4) => c4.filePath === msgFile.path)) {
let msgContent = await getMsgContent({ plugin, msgFile });
await createDBMessageContent({
msgContent,
file: msgFile
});
}
}
};
var searchMsgFilesWithKey = async (params) => {
let allDBMessageContents = await getAllDBMessageContents();
let searchConvenientMessageContents = allDBMessageContents.map(
(messageContent) => ({
...messageContent,
recipients: messageContent.recipients.map((r3) => r3.name + " <" + r3.email + ">").join(", ")
})
);
const results = import_fuzzysort.default.go(
params.key,
searchConvenientMessageContents,
{
keys: ["senderName", "senderEmail", "subject", "body", "recipients"],
threshold: -2e4,
scoreFn: (a3) => {
var _a, _b, _c, _d, _e;
const searchKey = params.key.toLowerCase();
const exactMatch = ((_a = a3[0]) == null ? void 0 : _a.target.toLowerCase().includes(searchKey)) || ((_b = a3[1]) == null ? void 0 : _b.target.toLowerCase().includes(searchKey)) || ((_c = a3[2]) == null ? void 0 : _c.target.toLowerCase().includes(searchKey)) || ((_d = a3[3]) == null ? void 0 : _d.target.toLowerCase().includes(searchKey)) || ((_e = a3[4]) == null ? void 0 : _e.target.toLowerCase().includes(searchKey));
if (exactMatch) {
return 0;
} else {
let senderNameScore = a3[0] ? a3[0].score : -1e5;
let senderEmailScore = a3[1] ? a3[1].score : -1e5;
let subjectScore = a3[2] ? a3[2].score : -1e5;
let bodyScore = a3[3] ? a3[3].score : -1e5;
let recipientsScore = a3[4] ? a3[4].score : -1e5;
return Math.max(senderNameScore, senderEmailScore, subjectScore, bodyScore, recipientsScore);
}
}
}
);
return results;
};
var getHighlightedPartOfSearchResult = (params) => {
const { highlightedResult, searchKey } = params;
let maxSearchDisplayLength = 120;
if (highlightedResult.length < maxSearchDisplayLength) {
return highlightedResult;
} else {
const firstMarkIndex = highlightedResult.indexOf('<mark class="oz-highlight">');
const lastMarkIndex = highlightedResult.lastIndexOf("</mark>");
if (firstMarkIndex === -1 || lastMarkIndex === -1)
return highlightedResult;
const searchKeyLength = searchKey.length;
const lengthAfterHighlight = highlightedResult.length - (lastMarkIndex + 7);
const leftUsageLength = maxSearchDisplayLength - searchKeyLength;
const eachSideUsageLength = Math.floor(leftUsageLength / 2);
let startIndex = 0;
let startMissing = 0;
if (firstMarkIndex > eachSideUsageLength) {
startIndex = firstMarkIndex - eachSideUsageLength;
} else {
startMissing = eachSideUsageLength - firstMarkIndex;
}
let endIndex = highlightedResult.length - 1;
if (lengthAfterHighlight > eachSideUsageLength) {
endIndex = lastMarkIndex + 7 + eachSideUsageLength;
let endLeftPlace = highlightedResult.length - 1 - endIndex;
if (endLeftPlace > startMissing) {
endIndex += startMissing;
} else {
endIndex = highlightedResult.length - 1;
}
} else {
let endMissing = eachSideUsageLength - lengthAfterHighlight;
if (endMissing > 0) {
if (startIndex > endMissing) {
startIndex = startIndex - endMissing;
} else {
startIndex = 0;
}
}
}
return "..." + highlightedResult.substring(startIndex, endIndex) + "...";
}
};
// src/components/search/index.tsx
var import_obsidian2 = require("obsidian");
function SearchViewComponent(params) {
const { plugin } = params;
const [searchKey, setSearchKey] = p2();
const [searchResults, setSearchResults] = p2();
const [allOpenStatus, setAllOpenStatus] = p2();
const promiseQueueRef = _2([]);
h2(() => {
const runPromiseQueue = async () => {
while (promiseQueueRef.current.length > 0) {
const nextPromise = promiseQueueRef.current[0];
try {
await nextPromise();
} catch (error) {
if (plugin.settings.logEnabled)
console.log("Search promise failed", error);
} finally {
promiseQueueRef.current.shift();
}
}
};
if (searchKey === "" || searchKey === null || searchKey === void 0) {
setSearchResults(null);
} else {
promiseQueueRef.current.push(runSearch);
runPromiseQueue();
}
}, [searchKey]);
const handleInputChange = (event) => {
const newSearchKey = event.target.value;
setSearchKey(newSearchKey);
};
const runSearch = async () => {
let currentSearchResults = [];
let results = await searchMsgFilesWithKey({ key: searchKey });
for (let result of results) {
let indexOfMaxScore = null;
let exactMatch = false;
const exactMatchIndex = result.findIndex(
(r3) => r3 == null ? void 0 : r3.target.toLowerCase().includes(searchKey.toLowerCase())
);
if (exactMatchIndex !== -1) {
indexOfMaxScore = exactMatchIndex;
exactMatch = true;
} else {
const scores = result.map((r3) => {
var _a;
return (_a = r3 == null ? void 0 : r3.score) != null ? _a : -1e5;
});
indexOfMaxScore = scores.reduce(
(maxIndex, score, index) => score > scores[maxIndex] ? index : maxIndex,
0
);
}
let highlightedResult = null;
if (exactMatch) {
let indexOfSearchMatch = result[indexOfMaxScore].target.toLowerCase().indexOf(searchKey.toLowerCase());
let lengthOfSearchKey = searchKey.length;
let originalTextOfSearchKey = result[indexOfMaxScore].target.substring(
indexOfSearchMatch,
indexOfSearchMatch + lengthOfSearchKey
);
highlightedResult = result[indexOfMaxScore].target.replace(
originalTextOfSearchKey,
'<mark class="oz-highlight">' + originalTextOfSearchKey + "</mark>"
);
} else {
highlightedResult = import_fuzzysort2.default.highlight(
result[indexOfMaxScore],
'<mark class="oz-highlight">',
"</mark>"
);
}
if (highlightedResult) {
highlightedResult = getHighlightedPartOfSearchResult({
highlightedResult: replaceNewLinesAndCarriages(highlightedResult),
searchKey
});
}
currentSearchResults.push({
result,
highlightedResult
});
}
setSearchResults(currentSearchResults);
};
return /* @__PURE__ */ Sn.createElement("div", null, /* @__PURE__ */ Sn.createElement("div", { className: "oz-msg-handler-actions-items oz-msg-handler-header-fixed" }, /* @__PURE__ */ Sn.createElement(
CgChevronDoubleUp,
{
className: "oz-msg-handler-action-button",
"aria-label": "Collapse All",
onClick: () => setAllOpenStatus("closed"),
size: 20
}
), /* @__PURE__ */ Sn.createElement(
CgChevronDoubleDown,
{
className: "oz-msg-handler-action-button",
"aria-label": "Expand All",
onClick: () => setAllOpenStatus("open"),
size: 20
}
)), /* @__PURE__ */ Sn.createElement("div", { className: "oz-searchbox-container" }, /* @__PURE__ */ Sn.createElement(
"input",
{
type: "text",
placeholder: "Provide a search key",
value: searchKey,
onChange: handleInputChange
}
)), /* @__PURE__ */ Sn.createElement("div", { className: "search-result-container" }, searchResults && (searchResults.length > 0 ? searchResults.map((searchResult) => {
return /* @__PURE__ */ Sn.createElement(
SearchResultFileMatch,
{
searchResult,
allOpenStatus,
plugin
}
);
}) : /* @__PURE__ */ Sn.createElement("div", { className: "search-empty-state" }, "No matches found"))));
}
var SearchResultFileMatch = (params) => {
var _a;
const { searchResult, allOpenStatus, plugin } = params;
const [open, setOpen] = p2(true);
h2(() => {
if (allOpenStatus === "open") {
setOpen(true);
} else if (allOpenStatus === "closed") {
setOpen(false);
}
}, [allOpenStatus]);
const getCurrentAbstractFile = () => {
return plugin.app.vault.getAbstractFileByPath(searchResult.result.obj.filePath);
};
const openFileClicked = (e3) => {
let file = getCurrentAbstractFile();
if (file) {
openFile({
file,
plugin,
newLeaf: (e3.ctrlKey || e3.metaKey) && !(e3.shiftKey || e3.altKey),
leafBySplit: (e3.ctrlKey || e3.metaKey) && (e3.shiftKey || e3.altKey)
});
}
};
const onAuxClick = (e3) => {
let file = getCurrentAbstractFile();
if (e3.button === 1 && file)
openFileInNewTab({ plugin, file });
};
const triggerContextMenu = (e3) => {
const fileMenu = new import_obsidian2.Menu();
const filePath = searchResult.result.obj.filePath;
const file = plugin.app.vault.getAbstractFileByPath(filePath);
if (file) {
plugin.app.workspace.trigger("file-menu", fileMenu, file, "file-explorer");
if (isMouseEvent) {
fileMenu.showAtPosition({ x: e3.pageX, y: e3.pageY });
}
}
};
return /* @__PURE__ */ Sn.createElement("div", { key: searchResult.result.obj.filePath, className: "tree-item search-result" }, /* @__PURE__ */ Sn.createElement("div", { className: "tree-item-self search-result-file-title is-clickable" }, /* @__PURE__ */ Sn.createElement("div", { className: "tree-item-icon collapse-icon" }, open ? /* @__PURE__ */ Sn.createElement(MdKeyboardArrowDown, { onClick: () => setOpen(false) }) : /* @__PURE__ */ Sn.createElement(MdKeyboardArrowRight, { onClick: () => setOpen(true) })), /* @__PURE__ */ Sn.createElement(
"div",
{
className: "tree-item-inner",
onClick: openFileClicked,
onAuxClick,
onContextMenu: triggerContextMenu
},
getFileName(searchResult.result.obj.filePath)
)), open && ((_a = searchResult.highlightedResult) == null ? void 0 : _a.length) > 0 && /* @__PURE__ */ Sn.createElement("div", { className: "search-result-file-matches" }, /* @__PURE__ */ Sn.createElement(
"div",
{
className: "search-result-file-match",
onClick: openFileClicked,
dangerouslySetInnerHTML: { __html: searchResult.highlightedResult }
}
)));
};
// node_modules/react-icons/hi/index.esm.js
function HiChevronDoubleLeft(props2) {
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 20 20", "fill": "currentColor" }, "child": [{ "tag": "path", "attr": { "fillRule": "evenodd", "d": "M15.707 15.707a1 1 0 01-1.414 0l-5-5a1 1 0 010-1.414l5-5a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 010 1.414zm-6 0a1 1 0 01-1.414 0l-5-5a1 1 0 010-1.414l5-5a1 1 0 011.414 1.414L5.414 10l4.293 4.293a1 1 0 010 1.414z", "clipRule": "evenodd" } }] })(props2);
}
function HiChevronDoubleRight(props2) {
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 20 20", "fill": "currentColor" }, "child": [{ "tag": "path", "attr": { "fillRule": "evenodd", "d": "M10.293 15.707a1 1 0 010-1.414L14.586 10l-4.293-4.293a1 1 0 111.414-1.414l5 5a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0z", "clipRule": "evenodd" } }, { "tag": "path", "attr": { "fillRule": "evenodd", "d": "M4.293 15.707a1 1 0 010-1.414L8.586 10 4.293 5.707a1 1 0 011.414-1.414l5 5a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0z", "clipRule": "evenodd" } }] })(props2);
}
// src/modals.ts
var import_obsidian3 = require("obsidian");
var FolderToSaveSuggestionModal = class extends import_obsidian3.FuzzySuggestModal {
constructor(app, fileToSave, fileName) {
super(app);
this.fileName = fileName;
if (typeof fileToSave === "string") {
fileToSave = base64ToArrayBuffer(fileToSave);
}
this.fileToSave = fileToSave;
}
getItemText(item) {
return item.path;
}
getItems() {
return getAllFoldersInVault(this.app);
}
onChooseItem(item, evt) {
this.app.vault.createBinary(item.path + "/" + this.fileName, this.fileToSave);
}
};
function getAllFoldersInVault(app) {
let folders = [];
let rootFolder = app.vault.getRoot();
folders.push(rootFolder);
function recursiveFx(folder) {
for (let child of folder.children) {
if (child instanceof import_obsidian3.TFolder) {
let childFolder = child;
folders.push(childFolder);
if (childFolder.children)
recursiveFx(childFolder);
}
}
}
recursiveFx(rootFolder);
return folders;
}
// src/components/renderer/index.tsx
function RendererViewComponent(params) {
const { plugin, fileToRender } = params;
const [messageContent, setMessageContent] = p2();
h2(() => {
getMsgContent({ plugin, msgFile: fileToRender }).then((msgContent) => {
setMessageContent(msgContent);
});
}, []);
return messageContent && /* @__PURE__ */ Sn.createElement(Sn.Fragment, null, /* @__PURE__ */ Sn.createElement(MSGHeaderComponent, { messageContent }), /* @__PURE__ */ Sn.createElement(MSGBodyComponent, { messageContent }), messageContent.attachments.length > 0 && /* @__PURE__ */ Sn.createElement(MSGAttachmentsComponent, { messageAttachments: messageContent.attachments, plugin }));
}
var MSGHeaderComponent = (params) => {
const { messageContent } = params;
const [open, setOpen] = p2(true);
const toggleOpen = () => setOpen(!open);
return /* @__PURE__ */ Sn.createElement(Sn.Fragment, null, /* @__PURE__ */ Sn.createElement("h3", { onClick: toggleOpen, className: "oz-cursor-pointer oz-msg-header-name" }, /* @__PURE__ */ Sn.createElement(ToggleIndicator, { open }), "Message Header"), open && /* @__PURE__ */ Sn.createElement("div", { className: "oz-msg-handler-header" }, /* @__PURE__ */ Sn.createElement("strong", null, "From"), ": ", messageContent.senderName, " <", /* @__PURE__ */ Sn.createElement(
"a",
{
"aria-label": "mailTo:" + messageContent.senderEmail,
href: "mailTo:" + messageContent.senderEmail,
target: "_blank",
className: "external-link",
rel: "noopener"
},
messageContent.senderEmail
), ">", /* @__PURE__ */ Sn.createElement("br", null), /* @__PURE__ */ Sn.createElement("strong", null, "Recipients"), ": ", /* @__PURE__ */ Sn.createElement(RecipientList, { recipients: messageContent.recipients }), " ", /* @__PURE__ */ Sn.createElement("br", null), /* @__PURE__ */ Sn.createElement("strong", null, "Sent"), ": ", messageContent.creationTime, " ", /* @__PURE__ */ Sn.createElement("br", null), /* @__PURE__ */ Sn.createElement("strong", null, "Subject"), ": ", messageContent.subject));
};
var MSGBodyComponent = (params) => {
const { messageContent } = params;
const cleanMsgBody = (txt) => txt.replace(/[\r\n]+/g, "</br>");
const [open, setOpen] = p2(true);
const toggleOpen = () => setOpen(!open);
return /* @__PURE__ */ Sn.createElement(Sn.Fragment, null, /* @__PURE__ */ Sn.createElement("h3", { onClick: toggleOpen, className: "oz-cursor-pointer oz-msg-attachments-body-name" }, /* @__PURE__ */ Sn.createElement(ToggleIndicator, { open }), "Message Body"), open && /* @__PURE__ */ Sn.createElement(
"div",
{
className: "oz-msg-handler-body",
dangerouslySetInnerHTML: { __html: cleanMsgBody(messageContent.body) }
}
));
};
var MSGAttachmentsComponent = (params) => {
const { messageAttachments, plugin } = params;
const [open, setOpen] = p2(true);
const toggleOpen = () => setOpen(!open);
return /* @__PURE__ */ Sn.createElement(Sn.Fragment, null, /* @__PURE__ */ Sn.createElement("h3", { onClick: toggleOpen, className: "oz-cursor-pointer oz-msg-attachments-header-name" }, /* @__PURE__ */ Sn.createElement(ToggleIndicator, { open }), "Attachments"), open && /* @__PURE__ */ Sn.createElement("div", { className: "oz-msg-handler-attachments" }, messageAttachments.map((attachment) => {
return /* @__PURE__ */ Sn.createElement(
MSGSingleAttachmentComponent,
{
key: attachment.fileName,
messageAttachment: attachment,
plugin
}
);
})));
};
var MSGSingleAttachmentComponent = (params) => {
const { messageAttachment, plugin } = params;
const [open, setOpen] = p2(false);
const toggleOpen = () => setOpen(!open);
const saveFileToVault = () => {
let modal = new FolderToSaveSuggestionModal(
plugin.app,
messageAttachment.fileBase64,
messageAttachment.fileName
);
modal.open();
};
const imgExtensions = [".png", "png", ".jpg", "jpg", ".jpeg", "jpeg"];
return /* @__PURE__ */ Sn.createElement("div", { className: "oz-msg-single-attachment-wrapper" }, /* @__PURE__ */ Sn.createElement("div", { onClick: toggleOpen, className: "oz-cursor-pointer oz-msg-attachment-name" }, imgExtensions.includes(messageAttachment.fileExtension) ? /* @__PURE__ */ Sn.createElement(ToggleIndicator, { open }) : /* @__PURE__ */ Sn.createElement(MdClose, { className: "msg-handler-react-icon" }), messageAttachment.fileName, /* @__PURE__ */ Sn.createElement("button", { onClick: saveFileToVault }, "Save File to Vault")), open && /* @__PURE__ */ Sn.createElement("div", { className: "oz-msg-attachment-display" }, imgExtensions.includes(messageAttachment.fileExtension) && /* @__PURE__ */ Sn.createElement("img", { src: `data:image/jpeg;base64,${messageAttachment.fileBase64}` })));
};
var RecipientList = (params) => {
const { recipients } = params;
const [open, setOpen] = p2();
const moreThanOneRecipient = recipients.length > 1;
h2(() => setOpen(!moreThanOneRecipient), []);
return /* @__PURE__ */ Sn.createElement(Sn.Fragment, null, moreThanOneRecipient && (open ? /* @__PURE__ */ Sn.createElement(
HiChevronDoubleLeft,
{
className: "msg-handler-react-icon",
onClick: () => setOpen(false),
size: "18"
}
) : /* @__PURE__ */ Sn.createElement(
HiChevronDoubleRight,
{
className: "msg-handler-react-icon",
onClick: () => setOpen(true),
size: "18"
}
)), open && recipients.map((recipient) => {
return /* @__PURE__ */ Sn.createElement("span", { id: recipient.email }, recipient.name, " <", /* @__PURE__ */ Sn.createElement(
"a",
{
"aria-label": "mailTo:" + recipient.email,
href: "mailTo:" + recipient.email,
target: "_blank",
className: "external-link",
rel: "noopener"
},
recipient.email
), ">", recipients.length > 1 ? "; " : "");
}));
};
var ToggleIndicator = (params) => {
const { open } = params;
return open ? /* @__PURE__ */ Sn.createElement(MdKeyboardArrowDown, { className: "msg-handler-react-icon" }) : /* @__PURE__ */ Sn.createElement(MdKeyboardArrowRight, { className: "msg-handler-react-icon" });
};
// src/view.tsx
var renderMsgFileToElement = async (params) => {
const { msgFile, targetEl, plugin } = params;
return new Promise((resolve, reject) => {
Sn.render(
/* @__PURE__ */ Sn.createElement("div", { className: "msg-handler-plugin-renderer" }, /* @__PURE__ */ Sn.createElement(RendererViewComponent, { plugin, fileToRender: msgFile })),
targetEl,
() => resolve()
);
});
};
var RENDER_VIEW_TYPE = "msg-handler-view";
var MsgHandlerView = class extends import_obsidian4.FileView {
constructor(leaf, plugin) {
super(leaf);
this.plugin = plugin;
}
getViewType() {
return RENDER_VIEW_TYPE;
}
destroy() {
Sn.unmountComponentAtNode(this.contentEl);
}
async onLoadFile(file) {
this.constructMessageRenderView({ fileToRender: file });
this.fileToRender = file;
}
async constructMessageRenderView(params) {
this.destroy();
await renderMsgFileToElement({
msgFile: params.fileToRender,
targetEl: this.contentEl,
plugin: this.plugin
});
}
async onClose() {
this.plugin.cleanLoadedBlobs({ all: false, forMsgFile: this.fileToRender });
}
async onUnloadFile(file) {
this.contentEl.innerHTML = "";
super.onUnloadFile(file);
}
};
var SEARCH_VIEW_DISPLAY_TEXT = "MSG Handler Search";
var SEARCH_VIEW_TYPE = "msg-handler-search-view";
var ICON = "MSG_HANDLER_ENVELOPE_ICON";
var MsgHandlerSearchView = class extends import_obsidian4.ItemView {
constructor(leaf, plugin) {
super(leaf);
this.plugin = plugin;
}
getViewType() {
return SEARCH_VIEW_TYPE;
}
getDisplayText() {
return SEARCH_VIEW_DISPLAY_TEXT;
}
getIcon() {
return ICON;
}
destroy() {
Sn.unmountComponentAtNode(this.contentEl);
}
async onClose() {
this.destroy();
}
async onOpen() {
this.destroy();
this.constructMsgSearchView();
}
constructMsgSearchView() {
this.destroy();
Sn.render(
/* @__PURE__ */ Sn.createElement("div", { className: "msg-handler-plugin-search" }, /* @__PURE__ */ Sn.createElement(SearchViewComponent, { plugin: this.plugin })),
this.contentEl
);
}
};
// src/icons.ts
var MSG_HANDLER_ENVELOPE_ICON = `<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7.88 12.04q0 .45-.11.87-.1.41-.33.74-.22.33-.58.52-.37.2-.87.2t-.85-.2q-.35-.21-.57-.55-.22-.33-.33-.75-.1-.42-.1-.86t.1-.87q.1-.43.34-.76.22-.34.59-.54.36-.2.87-.2t.86.2q.35.21.57.55.22.34.31.77.1.43.1.88zM24 12v9.38q0 .46-.33.8-.33.32-.8.32H7.13q-.46 0-.8-.33-.32-.33-.32-.8V18H1q-.41 0-.7-.3-.3-.29-.3-.7V7q0-.41.3-.7Q.58 6 1 6h6.5V2.55q0-.44.3-.75.3-.3.75-.3h12.9q.44 0 .75.3.3.3.3.75V10.85l1.24.72h.01q.1.07.18.18.07.12.07.25zm-6-8.25v3h3v-3zm0 4.5v3h3v-3zm0 4.5v1.83l3.05-1.83zm-5.25-9v3h3.75v-3zm0 4.5v3h3.75v-3zm0 4.5v2.03l2.41 1.5 1.34-.8v-2.73zM9 3.75V6h2l.13.01.12.04v-2.3zM5.98 15.98q.9 0 1.6-.3.7-.32 1.19-.86.48-.55.73-1.28.25-.74.25-1.61 0-.83-.25-1.55-.24-.71-.71-1.24t-1.15-.83q-.68-.3-1.55-.3-.92 0-1.64.3-.71.3-1.2.85-.5.54-.75 1.3-.25.74-.25 1.63 0 .85.26 1.56.26.72.74 1.23.48.52 1.17.81.69.3 1.56.3zM7.5 21h12.39L12 16.08V17q0 .41-.3.7-.29.3-.7.3H7.5zm15-.13v-7.24l-5.9 3.54Z"/></svg>`;
// src/settings.ts
var import_obsidian5 = require("obsidian");
var DEFAULT_SETTINGS = {
searchEnabled: true,
logEnabled: false
};
var MSGHandlerPluginSettingsTab = class extends import_obsidian5.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
}
display() {
let { containerEl } = this;
const tipDiv = containerEl.createDiv("tip");
tipDiv.addClass("oz-msg-handler-tip-div");
const tipLink = tipDiv.createEl("a", { href: "https://revolut.me/ozante" });
const tipImg = tipLink.createEl("img", {
attr: {
src: "https://raw.githubusercontent.com/ozntel/file-tree-alternative/main/images/tip%20the%20artist_v2.png"
}
});
tipImg.height = 55;
const coffeeDiv = containerEl.createDiv("coffee");
coffeeDiv.addClass("oz-msg-handler-coffee-div");
const coffeeLink = coffeeDiv.createEl("a", { href: "https://ko-fi.com/L3L356V6Q" });
const coffeeImg = coffeeLink.createEl("img", {
attr: {
src: "https://cdn.ko-fi.com/cdn/kofi2.png?v=3"
}
});
coffeeImg.height = 45;
let headerSettings = containerEl.createEl("h1");
headerSettings.innerText = "MSG Handler Settings";
new import_obsidian5.Setting(containerEl).setName("MSG Search View").setDesc("Turn on if you want automatically to be opened Search View after each vault/plugin refresh").addToggle(
(toggle) => toggle.setValue(this.plugin.settings.searchEnabled).onChange((value) => {
this.plugin.settings.searchEnabled = value;
this.plugin.saveSettings();
if (value) {
this.plugin.openMsgHandlerSearchLeaf({ showAfterAttach: true });
} else {
this.plugin.detachMsgHandlerSearchLeaf();
}
})
);
new import_obsidian5.Setting(containerEl).setName("Plugin Logs in Console").setDesc("Turn on if you want to see the plugin logs within the console for actions").addToggle(
(toggle) => toggle.setValue(this.plugin.settings.logEnabled).onChange((value) => {
this.plugin.settings.logEnabled = value;
this.plugin.saveSettings();
})
);
}
};
// src/main.ts
var MsgHandlerPlugin = class extends import_obsidian6.Plugin {
constructor() {
super(...arguments);
this.acceptedExtensions = ["msg", "eml"];
this.ribbonIconEl = void 0;
// @API - SHARED WITH OZAN'S IMAGE IN EDITOR - DO NOT CHANGE OR SYNC BEFORE
this.renderMSG = async (params) => {
const { msgFile, targetEl } = params;
await renderMsgFileToElement({
msgFile,
targetEl,
plugin: this
});
};
// @API - SHARED WITH OZAN'S IMAGE IN EDITOR - DO NOT CHANGE OR SYNC BEFORE
this.cleanLoadedBlobs = (params) => {
};
this.openMsgHandlerSearchLeaf = async (params) => {
const { showAfterAttach } = params;
let leafs = this.app.workspace.getLeavesOfType(SEARCH_VIEW_TYPE);
if (leafs.length === 0) {
let leaf = this.app.workspace.getLeftLeaf(false);
await leaf.setViewState({ type: SEARCH_VIEW_TYPE });
if (showAfterAttach)
this.app.workspace.revealLeaf(leaf);
} else {
if (showAfterAttach && leafs.length > 0) {
this.app.workspace.revealLeaf(leafs[0]);
}
}
};
this.detachMsgHandlerSearchLeaf = () => {
let leafs = this.app.workspace.getLeavesOfType(SEARCH_VIEW_TYPE);
for (let leaf of leafs) {
leaf.view.destroy();
leaf.detach();
}
};
this.registerMsgExtensionView = () => {
try {
this.registerExtensions(this.acceptedExtensions, RENDER_VIEW_TYPE);
} catch (err) {
if (this.settings.logEnabled)
console.log("Msg file extension renderer was already registered");
}
};
/* --------------- EVENT HANDLERS FOR VAULT FILE CHANGES -------------- */
/**
* This function is created to handle "create" event for vault
* @param file
*/
this.handleFileCreate = async (file) => {
if (this.acceptedExtensions.contains(file.extension)) {
let dbMsgContents = await getDBMessageContentsByPath({ filePath: file.path });
if (dbMsgContents.length === 0) {
let msgContent = await getMsgContent({ plugin: this, msgFile: file });
createDBMessageContent({
msgContent,
file
});
if (this.settings.logEnabled)
console.log(`DB Index Record is created for ${file.path}`);
}
}
};
/**
* This function is created to handle "delete" event for vault
* @param file
*/
this.handleFileDelete = async (file) => {
if (this.acceptedExtensions.contains(file.extension)) {
let dbMsgContents = await getDBMessageContentsByPath({ filePath: file.path });
if (dbMsgContents.length > 0) {
for (let dbMsgContent of dbMsgContents) {
await deleteDBMessageContentById({ id: dbMsgContent.id });
if (this.settings.logEnabled)
console.log(`DB Index Record is deleted for ${file.path}`);
}
}
}
};
/**
* This function is created to handle "rename" event for vault
* @param file
* @param oldPath
*/
this.handleFileRename = async (file, oldPath) => {
await updateFilePathOfAllRecords({ oldValue: oldPath, newValue: file.path });
if (this.settings.logEnabled)
console.log(`DB Index Record is updated for ${file.path}`);
};
}
async onload() {
(0, import_obsidian6.addIcon)(ICON, MSG_HANDLER_ENVELOPE_ICON);
this.addSettingTab(new MSGHandlerPluginSettingsTab(this.app, this));
await this.loadSettings();
this.registerView(RENDER_VIEW_TYPE, (leaf) => {
return new MsgHandlerView(leaf, this);
});
this.registerView(SEARCH_VIEW_TYPE, (leaf) => {
return new MsgHandlerSearchView(leaf, this);
});
this.registerMsgExtensionView();
this.app.workspace.onLayoutReady(() => {
syncDatabaseWithVaultFiles({ plugin: this }).then(() => {
if (this.settings.logEnabled)
console.log("Vault DB Sync is completed for MSG Files");
});
this.openMsgHandlerSearchLeaf({ showAfterAttach: false });
});
this.registerMarkdownPostProcessor((el, ctx) => {
let msgElement = el.querySelector('.internal-embed[src$=".eml"]') || el.querySelector('.internal-embed[src$=".msg"]');
if (msgElement) {
let src = msgElement.getAttribute("src");
if (src) {
let msgFile = this.app.metadataCache.getFirstLinkpathDest(src, ctx.sourcePath);
if (msgFile) {
let parentMsgElement = msgElement.parentElement;
msgElement.remove();
let wrapperDiv = parentMsgElement.createEl("div");
wrapperDiv.addClass("oz-msg-handler-preview-render");
this.renderMSG({
msgFile,
targetEl: wrapperDiv
});
}
}
}
});
this.addCommand({
id: "reveal-msg-handler-search-leaf",
name: "Reveal Search Leaf",
callback: () => {
this.openMsgHandlerSearchLeaf({ showAfterAttach: true });
}
});
this.app.vault.on("create", this.handleFileCreate);
this.app.vault.on("delete", this.handleFileDelete);
this.app.vault.on("rename", this.handleFileRename);
this.ribbonIconEl = this.addRibbonIcon(ICON, "MSG Handler", async () => {
await this.openMsgHandlerSearchLeaf({ showAfterAttach: true });
});
}
onunload() {
this.app.vault.off("create", this.handleFileCreate);
this.app.vault.off("delete", this.handleFileDelete);
this.app.vault.off("rename", this.handleFileRename);
}
async loadSettings() {
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
}
async saveSettings() {
await this.saveData(this.settings);
}
};