wngx-filter
Version:
Angular 7 generic components for array filter in *ngFor directive.
1,657 lines (1,650 loc) • 137 kB
JavaScript
import { __spread, __values } from 'tslib';
import { Pipe, NgModule } from '@angular/core';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* ascii-folder.js
* https://github.com/mplatt/fold-to-ascii-js
*
* This is a JavaScript port of the Apache Lucene ASCII Folding Filter.
*
* The Apache Lucene ASCII Folding Filter is licensed to the Apache Software
* Foundation (ASF) under one or more contributor license agreements. See the
* NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF licenses this file to You under the Apache
* License, Version 2.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
var /**
* ascii-folder.js
* https://github.com/mplatt/fold-to-ascii-js
*
* This is a JavaScript port of the Apache Lucene ASCII Folding Filter.
*
* The Apache Lucene ASCII Folding Filter is licensed to the Apache Software
* Foundation (ASF) under one or more contributor license agreements. See the
* NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF licenses this file to You under the Apache
* License, Version 2.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
ASCIIFolder = /** @class */ (function () {
function ASCIIFolder() {
}
/**
* Sanitize strings by converting alphabetic, numeric, and symbolic Unicode characters which are not contained in
* the first 127 ASCII characters (the "Basic Latin" Unicode block) into a ASCII equivalents.
*
* @param str The string to be sanitized
* @param replacement The character an unmapped character should be replaced with or null should the original
* character be retained
// tslint:disable-next-line:no-redundant-jsdoc
* @returns The sanitized string
*/
/**
* Sanitize strings by converting alphabetic, numeric, and symbolic Unicode characters which are not contained in
* the first 127 ASCII characters (the "Basic Latin" Unicode block) into a ASCII equivalents.
*
* @param {?=} str The string to be sanitized
* @param {?=} replacement The character an unmapped character should be replaced with or null should the original
* character be retained
* // tslint:disable-next-line:no-redundant-jsdoc
* @return {?} The sanitized string
*/
ASCIIFolder.fold = /**
* Sanitize strings by converting alphabetic, numeric, and symbolic Unicode characters which are not contained in
* the first 127 ASCII characters (the "Basic Latin" Unicode block) into a ASCII equivalents.
*
* @param {?=} str The string to be sanitized
* @param {?=} replacement The character an unmapped character should be replaced with or null should the original
* character be retained
* // tslint:disable-next-line:no-redundant-jsdoc
* @return {?} The sanitized string
*/
function (str, replacement) {
if (str === void 0) { str = ''; }
if (replacement === void 0) { replacement = ''; }
var e_1, _a;
/** @type {?} */
var foldedStr = '';
if (str === null) {
return '';
}
if (typeof str === 'number') {
return '' + str;
}
if (typeof str !== 'string') {
throw new Error('Invalid input data type');
}
try {
for (var str_1 = __values(str), str_1_1 = str_1.next(); !str_1_1.done; str_1_1 = str_1.next()) {
var character = str_1_1.value;
if (character.charCodeAt(0) < 128) {
foldedStr = foldedStr.concat(character);
}
else {
foldedStr = foldedStr.concat(ASCIIFolder.replaceChar(character, replacement));
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (str_1_1 && !str_1_1.done && (_a = str_1.return)) _a.call(str_1);
}
finally { if (e_1) throw e_1.error; }
}
return foldedStr;
};
/**
* Replaces a single character
*
* @param char The character to replace
* @param replacement What string unmapped characters should be replaced with
* @returns A string representing the replacement of the character
*/
/**
* Replaces a single character
*
* @param {?} char The character to replace
* @param {?} replacement What string unmapped characters should be replaced with
* @return {?} A string representing the replacement of the character
*/
ASCIIFolder.replaceChar = /**
* Replaces a single character
*
* @param {?} char The character to replace
* @param {?} replacement What string unmapped characters should be replaced with
* @return {?} A string representing the replacement of the character
*/
function (char, replacement) {
/** @type {?} */
var ascii = mapping.get(char.charCodeAt(0));
return ascii ? ascii : replacement;
};
return ASCIIFolder;
}());
/** @type {?} */
var mapping = new Map([
[0xC0, 'A'],
[0xC1, 'A'],
[0xC2, 'A'],
[0xC3, 'A'],
[0xC4, 'A'],
[0xC5, 'A'],
[0x100, 'A'],
[0x102, 'A'],
[0x104, 'A'],
[0x18F, 'A'],
[0x1CD, 'A'],
[0x1DE, 'A'],
[0x1E0, 'A'],
[0x1FA, 'A'],
[0x200, 'A'],
[0x202, 'A'],
[0x226, 'A'],
[0x23A, 'A'],
[0x1D00, 'A'],
[0x1E00, 'A'],
[0x1EA0, 'A'],
[0x1EA2, 'A'],
[0x1EA4, 'A'],
[0x1EA6, 'A'],
[0x1EA8, 'A'],
[0x1EAA, 'A'],
[0x1EAC, 'A'],
[0x1EAE, 'A'],
[0x1EB0, 'A'],
[0x1EB2, 'A'],
[0x1EB4, 'A'],
[0x1EB6, 'A'],
[0x24B6, 'A'],
[0xFF21, 'A'],
[0xE0, 'a'],
[0xE1, 'a'],
[0xE2, 'a'],
[0xE3, 'a'],
[0xE4, 'a'],
[0xE5, 'a'],
[0x101, 'a'],
[0x103, 'a'],
[0x105, 'a'],
[0x1CE, 'a'],
[0x1DF, 'a'],
[0x1E1, 'a'],
[0x1FB, 'a'],
[0x201, 'a'],
[0x203, 'a'],
[0x227, 'a'],
[0x250, 'a'],
[0x259, 'a'],
[0x25A, 'a'],
[0x1D8F, 'a'],
[0x1D95, 'a'],
[0x1E01, 'a'],
[0x1E9A, 'a'],
[0x1EA1, 'a'],
[0x1EA3, 'a'],
[0x1EA5, 'a'],
[0x1EA7, 'a'],
[0x1EA9, 'a'],
[0x1EAB, 'a'],
[0x1EAD, 'a'],
[0x1EAF, 'a'],
[0x1EB1, 'a'],
[0x1EB3, 'a'],
[0x1EB5, 'a'],
[0x1EB7, 'a'],
[0x2090, 'a'],
[0x2094, 'a'],
[0x24D0, 'a'],
[0x2C65, 'a'],
[0x2C6F, 'a'],
[0xFF41, 'a'],
[0xA732, 'AA'],
[0xC6, 'AE'],
[0x1E2, 'AE'],
[0x1FC, 'AE'],
[0x1D01, 'AE'],
[0xA734, 'AO'],
[0xA736, 'AU'],
[0xA738, 'AV'],
[0xA73A, 'AV'],
[0xA73C, 'AY'],
[0x249C, '(a)'],
[0xA733, 'aa'],
[0xE6, 'ae'],
[0x1E3, 'ae'],
[0x1FD, 'ae'],
[0x1D02, 'ae'],
[0xA735, 'ao'],
[0xA737, 'au'],
[0xA739, 'av'],
[0xA73B, 'av'],
[0xA73D, 'ay'],
[0x181, 'B'],
[0x182, 'B'],
[0x243, 'B'],
[0x299, 'B'],
[0x1D03, 'B'],
[0x1E02, 'B'],
[0x1E04, 'B'],
[0x1E06, 'B'],
[0x24B7, 'B'],
[0xFF22, 'B'],
[0x180, 'b'],
[0x183, 'b'],
[0x253, 'b'],
[0x1D6C, 'b'],
[0x1D80, 'b'],
[0x1E03, 'b'],
[0x1E05, 'b'],
[0x1E07, 'b'],
[0x24D1, 'b'],
[0xFF42, 'b'],
[0x249D, '(b)'],
[0xC7, 'C'],
[0x106, 'C'],
[0x108, 'C'],
[0x10A, 'C'],
[0x10C, 'C'],
[0x187, 'C'],
[0x23B, 'C'],
[0x297, 'C'],
[0x1D04, 'C'],
[0x1E08, 'C'],
[0x24B8, 'C'],
[0xFF23, 'C'],
[0xE7, 'c'],
[0x107, 'c'],
[0x109, 'c'],
[0x10B, 'c'],
[0x10D, 'c'],
[0x188, 'c'],
[0x23C, 'c'],
[0x255, 'c'],
[0x1E09, 'c'],
[0x2184, 'c'],
[0x24D2, 'c'],
[0xA73E, 'c'],
[0xA73F, 'c'],
[0xFF43, 'c'],
[0x249E, '(c)'],
[0xD0, 'D'],
[0x10E, 'D'],
[0x110, 'D'],
[0x189, 'D'],
[0x18A, 'D'],
[0x18B, 'D'],
[0x1D05, 'D'],
[0x1D06, 'D'],
[0x1E0A, 'D'],
[0x1E0C, 'D'],
[0x1E0E, 'D'],
[0x1E10, 'D'],
[0x1E12, 'D'],
[0x24B9, 'D'],
[0xA779, 'D'],
[0xFF24, 'D'],
[0xF0, 'd'],
[0x10F, 'd'],
[0x111, 'd'],
[0x18C, 'd'],
[0x221, 'd'],
[0x256, 'd'],
[0x257, 'd'],
[0x1D6D, 'd'],
[0x1D81, 'd'],
[0x1D91, 'd'],
[0x1E0B, 'd'],
[0x1E0D, 'd'],
[0x1E0F, 'd'],
[0x1E11, 'd'],
[0x1E13, 'd'],
[0x24D3, 'd'],
[0xA77A, 'd'],
[0xFF44, 'd'],
[0x1C4, 'DZ'],
[0x1F1, 'DZ'],
[0x1C5, 'Dz'],
[0x1F2, 'Dz'],
[0x249F, '(d)'],
[0x238, 'db'],
[0x1C6, 'dz'],
[0x1F3, 'dz'],
[0x2A3, 'dz'],
[0x2A5, 'dz'],
[0xC8, 'E'],
[0xC9, 'E'],
[0xCA, 'E'],
[0xCB, 'E'],
[0x112, 'E'],
[0x114, 'E'],
[0x116, 'E'],
[0x118, 'E'],
[0x11A, 'E'],
[0x18E, 'E'],
[0x190, 'E'],
[0x204, 'E'],
[0x206, 'E'],
[0x228, 'E'],
[0x246, 'E'],
[0x1D07, 'E'],
[0x1E14, 'E'],
[0x1E16, 'E'],
[0x1E18, 'E'],
[0x1E1A, 'E'],
[0x1E1C, 'E'],
[0x1EB8, 'E'],
[0x1EBA, 'E'],
[0x1EBC, 'E'],
[0x1EBE, 'E'],
[0x1EC0, 'E'],
[0x1EC2, 'E'],
[0x1EC4, 'E'],
[0x1EC6, 'E'],
[0x24BA, 'E'],
[0x2C7B, 'E'],
[0xFF25, 'E'],
[0xE8, 'e'],
[0xE9, 'e'],
[0xEA, 'e'],
[0xEB, 'e'],
[0x113, 'e'],
[0x115, 'e'],
[0x117, 'e'],
[0x119, 'e'],
[0x11B, 'e'],
[0x1DD, 'e'],
[0x205, 'e'],
[0x207, 'e'],
[0x229, 'e'],
[0x247, 'e'],
[0x258, 'e'],
[0x25B, 'e'],
[0x25C, 'e'],
[0x25D, 'e'],
[0x25E, 'e'],
[0x29A, 'e'],
[0x1D08, 'e'],
[0x1D92, 'e'],
[0x1D93, 'e'],
[0x1D94, 'e'],
[0x1E15, 'e'],
[0x1E17, 'e'],
[0x1E19, 'e'],
[0x1E1B, 'e'],
[0x1E1D, 'e'],
[0x1EB9, 'e'],
[0x1EBB, 'e'],
[0x1EBD, 'e'],
[0x1EBF, 'e'],
[0x1EC1, 'e'],
[0x1EC3, 'e'],
[0x1EC5, 'e'],
[0x1EC7, 'e'],
[0x2091, 'e'],
[0x24D4, 'e'],
[0x2C78, 'e'],
[0xFF45, 'e'],
[0x24A0, '(e)'],
[0x191, 'F'],
[0x1E1E, 'F'],
[0x24BB, 'F'],
[0xA730, 'F'],
[0xA77B, 'F'],
[0xA7FB, 'F'],
[0xFF26, 'F'],
[0x192, 'f'],
[0x1D6E, 'f'],
[0x1D82, 'f'],
[0x1E1F, 'f'],
[0x1E9B, 'f'],
[0x24D5, 'f'],
[0xA77C, 'f'],
[0xFF46, 'f'],
[0x24A1, '(f)'],
[0xFB00, 'ff'],
[0xFB03, 'ffi'],
[0xFB04, 'ffl'],
[0xFB01, 'fi'],
[0xFB02, 'fl'],
[0x11C, 'G'],
[0x11E, 'G'],
[0x120, 'G'],
[0x122, 'G'],
[0x193, 'G'],
[0x1E4, 'G'],
[0x1E5, 'G'],
[0x1E6, 'G'],
[0x1E7, 'G'],
[0x1F4, 'G'],
[0x262, 'G'],
[0x29B, 'G'],
[0x1E20, 'G'],
[0x24BC, 'G'],
[0xA77D, 'G'],
[0xA77E, 'G'],
[0xFF27, 'G'],
[0x11D, 'g'],
[0x11F, 'g'],
[0x121, 'g'],
[0x123, 'g'],
[0x1F5, 'g'],
[0x260, 'g'],
[0x261, 'g'],
[0x1D77, 'g'],
[0x1D79, 'g'],
[0x1D83, 'g'],
[0x1E21, 'g'],
[0x24D6, 'g'],
[0xA77F, 'g'],
[0xFF47, 'g'],
[0x24A2, '(g)'],
[0x124, 'H'],
[0x126, 'H'],
[0x21E, 'H'],
[0x29C, 'H'],
[0x1E22, 'H'],
[0x1E24, 'H'],
[0x1E26, 'H'],
[0x1E28, 'H'],
[0x1E2A, 'H'],
[0x24BD, 'H'],
[0x2C67, 'H'],
[0x2C75, 'H'],
[0xFF28, 'H'],
[0x125, 'h'],
[0x127, 'h'],
[0x21F, 'h'],
[0x265, 'h'],
[0x266, 'h'],
[0x2AE, 'h'],
[0x2AF, 'h'],
[0x1E23, 'h'],
[0x1E25, 'h'],
[0x1E27, 'h'],
[0x1E29, 'h'],
[0x1E2B, 'h'],
[0x1E96, 'h'],
[0x24D7, 'h'],
[0x2C68, 'h'],
[0x2C76, 'h'],
[0xFF48, 'h'],
[0x1F6, 'HV'],
[0x24A3, '(h)'],
[0x195, 'hv'],
[0xCC, 'I'],
[0xCD, 'I'],
[0xCE, 'I'],
[0xCF, 'I'],
[0x128, 'I'],
[0x12A, 'I'],
[0x12C, 'I'],
[0x12E, 'I'],
[0x130, 'I'],
[0x196, 'I'],
[0x197, 'I'],
[0x1CF, 'I'],
[0x208, 'I'],
[0x20A, 'I'],
[0x26A, 'I'],
[0x1D7B, 'I'],
[0x1E2C, 'I'],
[0x1E2E, 'I'],
[0x1EC8, 'I'],
[0x1ECA, 'I'],
[0x24BE, 'I'],
[0xA7FE, 'I'],
[0xFF29, 'I'],
[0xEC, 'i'],
[0xED, 'i'],
[0xEE, 'i'],
[0xEF, 'i'],
[0x129, 'i'],
[0x12B, 'i'],
[0x12D, 'i'],
[0x12F, 'i'],
[0x131, 'i'],
[0x1D0, 'i'],
[0x209, 'i'],
[0x20B, 'i'],
[0x268, 'i'],
[0x1D09, 'i'],
[0x1D62, 'i'],
[0x1D7C, 'i'],
[0x1D96, 'i'],
[0x1E2D, 'i'],
[0x1E2F, 'i'],
[0x1EC9, 'i'],
[0x1ECB, 'i'],
[0x2071, 'i'],
[0x24D8, 'i'],
[0xFF49, 'i'],
[0x132, 'IJ'],
[0x24A4, '(i)'],
[0x133, 'ij'],
[0x134, 'J'],
[0x248, 'J'],
[0x1D0A, 'J'],
[0x24BF, 'J'],
[0xFF2A, 'J'],
[0x135, 'j'],
[0x1F0, 'j'],
[0x237, 'j'],
[0x249, 'j'],
[0x25F, 'j'],
[0x284, 'j'],
[0x29D, 'j'],
[0x24D9, 'j'],
[0x2C7C, 'j'],
[0xFF4A, 'j'],
[0x24A5, '(j)'],
[0x136, 'K'],
[0x198, 'K'],
[0x1E8, 'K'],
[0x1D0B, 'K'],
[0x1E30, 'K'],
[0x1E32, 'K'],
[0x1E34, 'K'],
[0x24C0, 'K'],
[0x2C69, 'K'],
[0xA740, 'K'],
[0xA742, 'K'],
[0xA744, 'K'],
[0xFF2B, 'K'],
[0x137, 'k'],
[0x199, 'k'],
[0x1E9, 'k'],
[0x29E, 'k'],
[0x1D84, 'k'],
[0x1E31, 'k'],
[0x1E33, 'k'],
[0x1E35, 'k'],
[0x24DA, 'k'],
[0x2C6A, 'k'],
[0xA741, 'k'],
[0xA743, 'k'],
[0xA745, 'k'],
[0xFF4B, 'k'],
[0x24A6, '(k)'],
[0x139, 'L'],
[0x13B, 'L'],
[0x13D, 'L'],
[0x13F, 'L'],
[0x141, 'L'],
[0x23D, 'L'],
[0x29F, 'L'],
[0x1D0C, 'L'],
[0x1E36, 'L'],
[0x1E38, 'L'],
[0x1E3A, 'L'],
[0x1E3C, 'L'],
[0x24C1, 'L'],
[0x2C60, 'L'],
[0x2C62, 'L'],
[0xA746, 'L'],
[0xA748, 'L'],
[0xA780, 'L'],
[0xFF2C, 'L'],
[0x13A, 'l'],
[0x13C, 'l'],
[0x13E, 'l'],
[0x140, 'l'],
[0x142, 'l'],
[0x19A, 'l'],
[0x234, 'l'],
[0x26B, 'l'],
[0x26C, 'l'],
[0x26D, 'l'],
[0x1D85, 'l'],
[0x1E37, 'l'],
[0x1E39, 'l'],
[0x1E3B, 'l'],
[0x1E3D, 'l'],
[0x24DB, 'l'],
[0x2C61, 'l'],
[0xA747, 'l'],
[0xA749, 'l'],
[0xA781, 'l'],
[0xFF4C, 'l'],
[0x1C7, 'LJ'],
[0x1EFA, 'LL'],
[0x1C8, 'Lj'],
[0x24A7, '(l)'],
[0x1C9, 'lj'],
[0x1EFB, 'll'],
[0x2AA, 'ls'],
[0x2AB, 'lz'],
[0x19C, 'M'],
[0x1D0D, 'M'],
[0x1E3E, 'M'],
[0x1E40, 'M'],
[0x1E42, 'M'],
[0x24C2, 'M'],
[0x2C6E, 'M'],
[0xA7FD, 'M'],
[0xA7FF, 'M'],
[0xFF2D, 'M'],
[0x26F, 'm'],
[0x270, 'm'],
[0x271, 'm'],
[0x1D6F, 'm'],
[0x1D86, 'm'],
[0x1E3F, 'm'],
[0x1E41, 'm'],
[0x1E43, 'm'],
[0x24DC, 'm'],
[0xFF4D, 'm'],
[0x24A8, '(m)'],
[0xD1, 'N'],
[0x143, 'N'],
[0x145, 'N'],
[0x147, 'N'],
[0x14A, 'N'],
[0x19D, 'N'],
[0x1F8, 'N'],
[0x220, 'N'],
[0x274, 'N'],
[0x1D0E, 'N'],
[0x1E44, 'N'],
[0x1E46, 'N'],
[0x1E48, 'N'],
[0x1E4A, 'N'],
[0x24C3, 'N'],
[0xFF2E, 'N'],
[0xF1, 'n'],
[0x144, 'n'],
[0x146, 'n'],
[0x148, 'n'],
[0x149, 'n'],
[0x14B, 'n'],
[0x19E, 'n'],
[0x1F9, 'n'],
[0x235, 'n'],
[0x272, 'n'],
[0x273, 'n'],
[0x1D70, 'n'],
[0x1D87, 'n'],
[0x1E45, 'n'],
[0x1E47, 'n'],
[0x1E49, 'n'],
[0x1E4B, 'n'],
[0x207F, 'n'],
[0x24DD, 'n'],
[0xFF4E, 'n'],
[0x1CA, 'NJ'],
[0x1CB, 'Nj'],
[0x24A9, '(n)'],
[0x1CC, 'nj'],
[0xD2, 'O'],
[0xD3, 'O'],
[0xD4, 'O'],
[0xD5, 'O'],
[0xD6, 'O'],
[0xD8, 'O'],
[0x14C, 'O'],
[0x14E, 'O'],
[0x150, 'O'],
[0x186, 'O'],
[0x19F, 'O'],
[0x1A0, 'O'],
[0x1D1, 'O'],
[0x1EA, 'O'],
[0x1EC, 'O'],
[0x1FE, 'O'],
[0x20C, 'O'],
[0x20E, 'O'],
[0x22A, 'O'],
[0x22C, 'O'],
[0x22E, 'O'],
[0x230, 'O'],
[0x1D0F, 'O'],
[0x1D10, 'O'],
[0x1E4C, 'O'],
[0x1E4E, 'O'],
[0x1E50, 'O'],
[0x1E52, 'O'],
[0x1ECC, 'O'],
[0x1ECE, 'O'],
[0x1ED0, 'O'],
[0x1ED2, 'O'],
[0x1ED4, 'O'],
[0x1ED6, 'O'],
[0x1ED8, 'O'],
[0x1EDA, 'O'],
[0x1EDC, 'O'],
[0x1EDE, 'O'],
[0x1EE0, 'O'],
[0x1EE2, 'O'],
[0x24C4, 'O'],
[0xA74A, 'O'],
[0xA74C, 'O'],
[0xFF2F, 'O'],
[0xF2, 'o'],
[0xF3, 'o'],
[0xF4, 'o'],
[0xF5, 'o'],
[0xF6, 'o'],
[0xF8, 'o'],
[0x14D, 'o'],
[0x14F, 'o'],
[0x151, 'o'],
[0x1A1, 'o'],
[0x1D2, 'o'],
[0x1EB, 'o'],
[0x1ED, 'o'],
[0x1FF, 'o'],
[0x20D, 'o'],
[0x20F, 'o'],
[0x22B, 'o'],
[0x22D, 'o'],
[0x22F, 'o'],
[0x231, 'o'],
[0x254, 'o'],
[0x275, 'o'],
[0x1D16, 'o'],
[0x1D17, 'o'],
[0x1D97, 'o'],
[0x1E4D, 'o'],
[0x1E4F, 'o'],
[0x1E51, 'o'],
[0x1E53, 'o'],
[0x1ECD, 'o'],
[0x1ECF, 'o'],
[0x1ED1, 'o'],
[0x1ED3, 'o'],
[0x1ED5, 'o'],
[0x1ED7, 'o'],
[0x1ED9, 'o'],
[0x1EDB, 'o'],
[0x1EDD, 'o'],
[0x1EDF, 'o'],
[0x1EE1, 'o'],
[0x1EE3, 'o'],
[0x2092, 'o'],
[0x24DE, 'o'],
[0x2C7A, 'o'],
[0xA74B, 'o'],
[0xA74D, 'o'],
[0xFF4F, 'o'],
[0x152, 'OE'],
[0x276, 'OE'],
[0xA74E, 'OO'],
[0x222, 'OU'],
[0x1D15, 'OU'],
[0x24AA, '(o)'],
[0x153, 'oe'],
[0x1D14, 'oe'],
[0xA74F, 'oo'],
[0x223, 'ou'],
[0x1A4, 'P'],
[0x1D18, 'P'],
[0x1E54, 'P'],
[0x1E56, 'P'],
[0x24C5, 'P'],
[0x2C63, 'P'],
[0xA750, 'P'],
[0xA752, 'P'],
[0xA754, 'P'],
[0xFF30, 'P'],
[0x1A5, 'p'],
[0x1D71, 'p'],
[0x1D7D, 'p'],
[0x1D88, 'p'],
[0x1E55, 'p'],
[0x1E57, 'p'],
[0x24DF, 'p'],
[0xA751, 'p'],
[0xA753, 'p'],
[0xA755, 'p'],
[0xA7FC, 'p'],
[0xFF50, 'p'],
[0x24AB, '(p)'],
[0x24A, 'Q'],
[0x24C6, 'Q'],
[0xA756, 'Q'],
[0xA758, 'Q'],
[0xFF31, 'Q'],
[0x138, 'q'],
[0x24B, 'q'],
[0x2A0, 'q'],
[0x24E0, 'q'],
[0xA757, 'q'],
[0xA759, 'q'],
[0xFF51, 'q'],
[0x24AC, '(q)'],
[0x239, 'qp'],
[0x154, 'R'],
[0x156, 'R'],
[0x158, 'R'],
[0x210, 'R'],
[0x212, 'R'],
[0x24C, 'R'],
[0x280, 'R'],
[0x281, 'R'],
[0x1D19, 'R'],
[0x1D1A, 'R'],
[0x1E58, 'R'],
[0x1E5A, 'R'],
[0x1E5C, 'R'],
[0x1E5E, 'R'],
[0x24C7, 'R'],
[0x2C64, 'R'],
[0xA75A, 'R'],
[0xA782, 'R'],
[0xFF32, 'R'],
[0x155, 'r'],
[0x157, 'r'],
[0x159, 'r'],
[0x211, 'r'],
[0x213, 'r'],
[0x24D, 'r'],
[0x27C, 'r'],
[0x27D, 'r'],
[0x27E, 'r'],
[0x27F, 'r'],
[0x1D63, 'r'],
[0x1D72, 'r'],
[0x1D73, 'r'],
[0x1D89, 'r'],
[0x1E59, 'r'],
[0x1E5B, 'r'],
[0x1E5D, 'r'],
[0x1E5F, 'r'],
[0x24E1, 'r'],
[0xA75B, 'r'],
[0xA783, 'r'],
[0xFF52, 'r'],
[0x24AD, '(r)'],
[0x15A, 'S'],
[0x15C, 'S'],
[0x15E, 'S'],
[0x160, 'S'],
[0x218, 'S'],
[0x1E60, 'S'],
[0x1E62, 'S'],
[0x1E64, 'S'],
[0x1E66, 'S'],
[0x1E68, 'S'],
[0x24C8, 'S'],
[0xA731, 'S'],
[0xA785, 'S'],
[0xFF33, 'S'],
[0x15B, 's'],
[0x15D, 's'],
[0x15F, 's'],
[0x161, 's'],
[0x17F, 's'],
[0x219, 's'],
[0x23F, 's'],
[0x282, 's'],
[0x1D74, 's'],
[0x1D8A, 's'],
[0x1E61, 's'],
[0x1E63, 's'],
[0x1E65, 's'],
[0x1E67, 's'],
[0x1E69, 's'],
[0x1E9C, 's'],
[0x1E9D, 's'],
[0x24E2, 's'],
[0xA784, 's'],
[0xFF53, 's'],
[0x1E9E, 'SS'],
[0x24AE, '(s)'],
[0xDF, 'ss'],
[0xFB06, 'st'],
[0x162, 'T'],
[0x164, 'T'],
[0x166, 'T'],
[0x1AC, 'T'],
[0x1AE, 'T'],
[0x21A, 'T'],
[0x23E, 'T'],
[0x1D1B, 'T'],
[0x1E6A, 'T'],
[0x1E6C, 'T'],
[0x1E6E, 'T'],
[0x1E70, 'T'],
[0x24C9, 'T'],
[0xA786, 'T'],
[0xFF34, 'T'],
[0x163, 't'],
[0x165, 't'],
[0x167, 't'],
[0x1AB, 't'],
[0x1AD, 't'],
[0x21B, 't'],
[0x236, 't'],
[0x287, 't'],
[0x288, 't'],
[0x1D75, 't'],
[0x1E6B, 't'],
[0x1E6D, 't'],
[0x1E6F, 't'],
[0x1E71, 't'],
[0x1E97, 't'],
[0x24E3, 't'],
[0x2C66, 't'],
[0xFF54, 't'],
[0xDE, 'TH'],
[0xA766, 'TH'],
[0xA728, 'TZ'],
[0x24AF, '(t)'],
[0x2A8, 'tc'],
[0xFE, 'th'],
[0x1D7A, 'th'],
[0xA767, 'th'],
[0x2A6, 'ts'],
[0xA729, 'tz'],
[0xD9, 'U'],
[0xDA, 'U'],
[0xDB, 'U'],
[0xDC, 'U'],
[0x168, 'U'],
[0x16A, 'U'],
[0x16C, 'U'],
[0x16E, 'U'],
[0x170, 'U'],
[0x172, 'U'],
[0x1AF, 'U'],
[0x1D3, 'U'],
[0x1D5, 'U'],
[0x1D7, 'U'],
[0x1D9, 'U'],
[0x1DB, 'U'],
[0x214, 'U'],
[0x216, 'U'],
[0x244, 'U'],
[0x1D1C, 'U'],
[0x1D7E, 'U'],
[0x1E72, 'U'],
[0x1E74, 'U'],
[0x1E76, 'U'],
[0x1E78, 'U'],
[0x1E7A, 'U'],
[0x1EE4, 'U'],
[0x1EE6, 'U'],
[0x1EE8, 'U'],
[0x1EEA, 'U'],
[0x1EEC, 'U'],
[0x1EEE, 'U'],
[0x1EF0, 'U'],
[0x24CA, 'U'],
[0xFF35, 'U'],
[0xF9, 'u'],
[0xFA, 'u'],
[0xFB, 'u'],
[0xFC, 'u'],
[0x169, 'u'],
[0x16B, 'u'],
[0x16D, 'u'],
[0x16F, 'u'],
[0x171, 'u'],
[0x173, 'u'],
[0x1B0, 'u'],
[0x1D4, 'u'],
[0x1D6, 'u'],
[0x1D8, 'u'],
[0x1DA, 'u'],
[0x1DC, 'u'],
[0x215, 'u'],
[0x217, 'u'],
[0x289, 'u'],
[0x1D64, 'u'],
[0x1D99, 'u'],
[0x1E73, 'u'],
[0x1E75, 'u'],
[0x1E77, 'u'],
[0x1E79, 'u'],
[0x1E7B, 'u'],
[0x1EE5, 'u'],
[0x1EE7, 'u'],
[0x1EE9, 'u'],
[0x1EEB, 'u'],
[0x1EED, 'u'],
[0x1EEF, 'u'],
[0x1EF1, 'u'],
[0x24E4, 'u'],
[0xFF55, 'u'],
[0x24B0, '(u)'],
[0x1D6B, 'ue'],
[0x1B2, 'V'],
[0x245, 'V'],
[0x1D20, 'V'],
[0x1E7C, 'V'],
[0x1E7E, 'V'],
[0x1EFC, 'V'],
[0x24CB, 'V'],
[0xA75E, 'V'],
[0xA768, 'V'],
[0xFF36, 'V'],
[0x28B, 'v'],
[0x28C, 'v'],
[0x1D65, 'v'],
[0x1D8C, 'v'],
[0x1E7D, 'v'],
[0x1E7F, 'v'],
[0x24E5, 'v'],
[0x2C71, 'v'],
[0x2C74, 'v'],
[0xA75F, 'v'],
[0xFF56, 'v'],
[0xA760, 'VY'],
[0x24B1, '(v)'],
[0xA761, 'vy'],
[0x174, 'W'],
[0x1F7, 'W'],
[0x1D21, 'W'],
[0x1E80, 'W'],
[0x1E82, 'W'],
[0x1E84, 'W'],
[0x1E86, 'W'],
[0x1E88, 'W'],
[0x24CC, 'W'],
[0x2C72, 'W'],
[0xFF37, 'W'],
[0x175, 'w'],
[0x1BF, 'w'],
[0x28D, 'w'],
[0x1E81, 'w'],
[0x1E83, 'w'],
[0x1E85, 'w'],
[0x1E87, 'w'],
[0x1E89, 'w'],
[0x1E98, 'w'],
[0x24E6, 'w'],
[0x2C73, 'w'],
[0xFF57, 'w'],
[0x24B2, '(w)'],
[0x1E8A, 'X'],
[0x1E8C, 'X'],
[0x24CD, 'X'],
[0xFF38, 'X'],
[0x1D8D, 'x'],
[0x1E8B, 'x'],
[0x1E8D, 'x'],
[0x2093, 'x'],
[0x24E7, 'x'],
[0xFF58, 'x'],
[0x24B3, '(x)'],
[0xDD, 'Y'],
[0x176, 'Y'],
[0x178, 'Y'],
[0x1B3, 'Y'],
[0x232, 'Y'],
[0x24E, 'Y'],
[0x28F, 'Y'],
[0x1E8E, 'Y'],
[0x1EF2, 'Y'],
[0x1EF4, 'Y'],
[0x1EF6, 'Y'],
[0x1EF8, 'Y'],
[0x1EFE, 'Y'],
[0x24CE, 'Y'],
[0xFF39, 'Y'],
[0xFD, 'y'],
[0xFF, 'y'],
[0x177, 'y'],
[0x1B4, 'y'],
[0x233, 'y'],
[0x24F, 'y'],
[0x28E, 'y'],
[0x1E8F, 'y'],
[0x1E99, 'y'],
[0x1EF3, 'y'],
[0x1EF5, 'y'],
[0x1EF7, 'y'],
[0x1EF9, 'y'],
[0x1EFF, 'y'],
[0x24E8, 'y'],
[0xFF59, 'y'],
[0x24B4, '(y)'],
[0x179, 'Z'],
[0x17B, 'Z'],
[0x17D, 'Z'],
[0x1B5, 'Z'],
[0x21C, 'Z'],
[0x224, 'Z'],
[0x1D22, 'Z'],
[0x1E90, 'Z'],
[0x1E92, 'Z'],
[0x1E94, 'Z'],
[0x24CF, 'Z'],
[0x2C6B, 'Z'],
[0xA762, 'Z'],
[0xFF3A, 'Z'],
[0x17A, 'z'],
[0x17C, 'z'],
[0x17E, 'z'],
[0x1B6, 'z'],
[0x21D, 'z'],
[0x225, 'z'],
[0x240, 'z'],
[0x290, 'z'],
[0x291, 'z'],
[0x1D76, 'z'],
[0x1D8E, 'z'],
[0x1E91, 'z'],
[0x1E93, 'z'],
[0x1E95, 'z'],
[0x24E9, 'z'],
[0x2C6C, 'z'],
[0xA763, 'z'],
[0xFF5A, 'z'],
[0x24B5, '(z)'],
[0x2070, '0'],
[0x2080, '0'],
[0x24EA, '0'],
[0x24FF, '0'],
[0xFF10, '0'],
[0xB9, '1'],
[0x2081, '1'],
[0x2460, '1'],
[0x24F5, '1'],
[0x2776, '1'],
[0x2780, '1'],
[0x278A, '1'],
[0xFF11, '1'],
[0x2488, '1.'],
[0x2474, '(1)'],
[0xB2, '2'],
[0x2082, '2'],
[0x2461, '2'],
[0x24F6, '2'],
[0x2777, '2'],
[0x2781, '2'],
[0x278B, '2'],
[0xFF12, '2'],
[0x2489, '2.'],
[0x2475, '(2)'],
[0xB3, '3'],
[0x2083, '3'],
[0x2462, '3'],
[0x24F7, '3'],
[0x2778, '3'],
[0x2782, '3'],
[0x278C, '3'],
[0xFF13, '3'],
[0x248A, '3.'],
[0x2476, '(3)'],
[0x2074, '4'],
[0x2084, '4'],
[0x2463, '4'],
[0x24F8, '4'],
[0x2779, '4'],
[0x2783, '4'],
[0x278D, '4'],
[0xFF14, '4'],
[0x248B, '4.'],
[0x2477, '(4)'],
[0x2075, '5'],
[0x2085, '5'],
[0x2464, '5'],
[0x24F9, '5'],
[0x277A, '5'],
[0x2784, '5'],
[0x278E, '5'],
[0xFF15, '5'],
[0x248C, '5.'],
[0x2478, '(5)'],
[0x2076, '6'],
[0x2086, '6'],
[0x2465, '6'],
[0x24FA, '6'],
[0x277B, '6'],
[0x2785, '6'],
[0x278F, '6'],
[0xFF16, '6'],
[0x248D, '6.'],
[0x2479, '(6)'],
[0x2077, '7'],
[0x2087, '7'],
[0x2466, '7'],
[0x24FB, '7'],
[0x277C, '7'],
[0x2786, '7'],
[0x2790, '7'],
[0xFF17, '7'],
[0x248E, '7.'],
[0x247A, '(7)'],
[0x2078, '8'],
[0x2088, '8'],
[0x2467, '8'],
[0x24FC, '8'],
[0x277D, '8'],
[0x2787, '8'],
[0x2791, '8'],
[0xFF18, '8'],
[0x248F, '8.'],
[0x247B, '(8)'],
[0x2079, '9'],
[0x2089, '9'],
[0x2468, '9'],
[0x24FD, '9'],
[0x277E, '9'],
[0x2788, '9'],
[0x2792, '9'],
[0xFF19, '9'],
[0x2490, '9.'],
[0x247C, '(9)'],
[0x2469, '10'],
[0x24FE, '10'],
[0x277F, '10'],
[0x2789, '10'],
[0x2793, '10'],
[0x2491, '10.'],
[0x247D, '(10)'],
[0x246A, '11'],
[0x24EB, '11'],
[0x2492, '11.'],
[0x247E, '(11)'],
[0x246B, '12'],
[0x24EC, '12'],
[0x2493, '12.'],
[0x247F, '(12)'],
[0x246C, '13'],
[0x24ED, '13'],
[0x2494, '13.'],
[0x2480, '(13)'],
[0x246D, '14'],
[0x24EE, '14'],
[0x2495, '14.'],
[0x2481, '(14)'],
[0x246E, '15'],
[0x24EF, '15'],
[0x2496, '15.'],
[0x2482, '(15)'],
[0x246F, '16'],
[0x24F0, '16'],
[0x2497, '16.'],
[0x2483, '(16)'],
[0x2470, '17'],
[0x24F1, '17'],
[0x2498, '17.'],
[0x2484, '(17)'],
[0x2471, '18'],
[0x24F2, '18'],
[0x2499, '18.'],
[0x2485, '(18)'],
[0x2472, '19'],
[0x24F3, '19'],
[0x249A, '19.'],
[0x2486, '(19)'],
[0x2473, '20'],
[0x24F4, '20'],
[0x249B, '20.'],
[0x2487, '(20)'],
[0xAB, '"'],
[0xBB, '"'],
[0x201C, '"'],
[0x201D, '"'],
[0x201E, '"'],
[0x2033, '"'],
[0x2036, '"'],
[0x275D, '"'],
[0x275E, '"'],
[0x276E, '"'],
[0x276F, '"'],
[0xFF02, '"'],
[0x2018, '\''],
[0x2019, '\''],
[0x201A, '\''],
[0x201B, '\''],
[0x2032, '\''],
[0x2035, '\''],
[0x2039, '\''],
[0x203A, '\''],
[0x275B, '\''],
[0x275C, '\''],
[0xFF07, '\''],
[0x2010, '-'],
[0x2011, '-'],
[0x2012, '-'],
[0x2013, '-'],
[0x2014, '-'],
[0x207B, '-'],
[0x208B, '-'],
[0xFF0D, '-'],
[0x2045, '['],
[0x2772, '['],
[0xFF3B, '['],
[0x2046, ']'],
[0x2773, ']'],
[0xFF3D, ']'],
[0x207D, '('],
[0x208D, '('],
[0x2768, '('],
[0x276A, '('],
[0xFF08, '('],
[0x2E28, '(('],
[0x207E, ')'],
[0x208E, ')'],
[0x2769, ')'],
[0x276B, ')'],
[0xFF09, ')'],
[0x2E29, '))'],
[0x276C, '<'],
[0x2770, '<'],
[0xFF1C, '<'],
[0x276D, '>'],
[0x2771, '>'],
[0xFF1E, '>'],
[0x2774, '{'],
[0xFF5B, '{'],
[0x2775, '}'],
[0xFF5D, '}'],
[0x207A, '+'],
[0x208A, '+'],
[0xFF0B, '+'],
[0x207C, '='],
[0x208C, '='],
[0xFF1D, '='],
[0xFF01, '!'],
[0x203C, '!!'],
[0x2049, '!?'],
[0xFF03, '#'],
[0xFF04, '$'],
[0x2052, '%'],
[0xFF05, '%'],
[0xFF06, '&'],
[0x204E, '*'],
[0xFF0A, '*'],
[0xFF0C, ','],
[0xFF0E, '.'],
[0x2044, '/'],
[0xFF0F, '/'],
[0xFF1A, ':'],
[0x204F, ';'],
[0xFF1B, ';'],
[0xFF1F, '?'],
[0x2047, '??'],
[0x2048, '?!'],
[0xFF20, '@'],
[0xFF3C, '\\'],
[0x2038, '^'],
[0xFF3E, '^'],
[0xFF3F, '_'],
[0x2053, '~'],
[0xFF5E, '~']
]);
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var WfilterPipe = /** @class */ (function () {
function WfilterPipe() {
}
/**
* @param {?} values
* @param {?} filter
* @return {?}
*/
WfilterPipe.prototype.transform = /**
* @param {?} values
* @param {?} filter
* @return {?}
*/
function (values, filter) {
// if values is not array, then return it...
if (values && !(values instanceof Array)) {
return values;
}
// if filter is null , then return value...
if (!filter) {
return values;
}
if (filter instanceof Array) {
return this._checkComplexType(values, filter);
}
else {
return this._checkSimpleType(values, filter);
}
};
/**
* @private
* @param {?} values
* @param {?} filter
* @return {?}
*/
WfilterPipe.prototype._checkSimpleType = /**
* @private
* @param {?} values
* @param {?} filter
* @return {?}
*/
function (values, filter) {
var _this = this;
if (!values || !filter) {
return values;
}
/** @type {?} */
var normalizedValues = __spread(values);
/** @type {?} */
var normalizedSearch = this._replaceSpecialChars(filter.toString().toLowerCase());
return normalizedValues.filter(function (item) {
return _this._replaceSpecialChars(item.toString())
.toLowerCase()
.includes(normalizedSearch);
});
};
/**
* @private
* @param {?} values
* @param {?} filter
* @return {?}
*/
WfilterPipe.prototype._checkComplexType = /**
* @private
* @param {?} values
* @param {?} filter
* @return {?}
*/
function (values, filter) {
var _this = this;
if (!values || !filter || !filter.length) {
return values;
}
/** @type {?} */
var result = [];
// find in all records
values.forEach(function (row) {
/** @type {?} */
var match = false;
// find in all filters in the array of filters
filter.forEach(function (field) {
// lê o valor da propriedade
/** @type {?} */
var v = row[field.field];
// Se o valor for um array, então faz a chamada recursiva
if (v !== null && v !== undefined && v instanceof Array) {
/** @type {?} */
var temp = _this.transform(v, field.value);
// se houver registro, é pq deve participar do resultado
match = match || (temp !== null && temp !== undefined && temp.length > 0);
}
else {
match = match || _this._checkValue(row, field);
}
});
if (match) {
result.push(row); // add row in return
}
});
return result;
};
/**
* @private
* @param {?} item
* @param {?} filter
* @return {?}
*/
WfilterPipe.prototype._checkValue = /**
* @private
* @param {?} item
* @param {?} filter
* @return {?}
*/
function (item, filter) {
if (!filter || !filter.field || !filter.value) {
return true;
}
if (this._existDot(filter.field)) {
return this._parseValue(item, filter.value, filter.field);
// return false;
}
else {
/** @type {?} */
var value = item[filter.field];
if (value) {
value = this._replaceSpecialChars(item[filter.field].toString());
/** @type {?} */
var normalizedSearch = this._replaceSpecialChars(filter.value.toString().toLowerCase());
return value.toLowerCase().includes(normalizedSearch);
}
else {
return false;
}
}
};
/**
* @private
* @param {?} reference
* @param {?} search
* @param {?} filter
* @return {?}
*/
WfilterPipe.prototype._parseValue = /**
* @private
* @param {?} reference
* @param {?} search
* @param {?} filter
* @return {?}
*/
function (reference, search, filter) {
/** @type {?} */
var fields = filter.split('.');
return this._existFieldValue(reference, search, fields, 0);
};
/**
* @private
* @param {?} path
* @return {?}
*/
WfilterPipe.prototype._existDot = /**
* @private
* @param {?} path
* @return {?}
*/
function (path) {
return path.indexOf('.') > -1;
};
/**
* @private
* @param {?} obj
* @param {?} search
* @param {?} fieldFind
* @param {?} indexFind
* @return {?}
*/
WfilterPipe.prototype._existFieldValue = /**
* @private
* @param {?} obj
* @param {?} search
* @param {?} fieldFind
* @param {?} indexFind
* @return {?}
*/
function (obj, search, fieldFind, indexFind) {
// Lê o valor da propriedade
/** @type {?} */
var ref = obj[fieldFind[indexFind]];
// Se estiver no último nível...
if (indexFind === fieldFind.length - 1) {
// Se tiver valor, confere se contém o que está procurando...
if (ref) {
/** @type {?} */
var value = this._replaceSpecialChars(ref.toString());
/** @type {?} */
var normalizedSearch = this._replaceSpecialChars(search.toString().toLowerCase());
return value.toLowerCase().includes(normalizedSearch);
}
else {
return false;
}
// Não está no último nível mas há valor na referência
}
else if (ref) {
return this._existFieldValue(ref, search, fieldFind, ++indexFind);
// Não está no último nível e não há valor na referência (null)
}
else {
return false;
}
};
/**
* @private
* @param {?} str
* @return {?}
*/
WfilterPipe.prototype._replaceSpecialChars = /**
* @private
* @param {?} str
* @return {?}
*/
function (str) {
return ASCIIFolder.fold(str);
};
WfilterPipe.decorators = [
{ type: Pipe, args: [{
name: 'wfilter',
pure: true,
},] }
];
return WfilterPipe;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var WngxFilterModule = /** @class */ (function () {
function WngxFilterModule() {
}
WngxFilterModule.decorators = [
{ type: NgModule, args: [{
declarations: [WfilterPipe],
imports: [],
exports: [WfilterPipe]
},] }
];
return WngxFilterModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { WfilterPipe, WngxFilterModule };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid25neC1maWx0ZXIuanMubWFwIiwic291cmNlcyI6WyJuZzovL3duZ3gtZmlsdGVyL2xpYi9waXBlcy9BU0NJSUZvbGRlci50cyIsIm5nOi8vd25neC1maWx0ZXIvbGliL3BpcGVzL3dmaWx0ZXIucGlwZS50cyIsIm5nOi8vd25neC1maWx0ZXIvbGliL3duZ3gtZmlsdGVyLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogYXNjaWktZm9sZGVyLmpzXHJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9tcGxhdHQvZm9sZC10by1hc2NpaS1qc1xyXG4gKlxyXG4gKiBUaGlzIGlzIGEgSmF2YVNjcmlwdCBwb3J0IG9mIHRoZSBBcGFjaGUgTHVjZW5lIEFTQ0lJIEZvbGRpbmcgRmlsdGVyLlxyXG4gKlxyXG4gKiBUaGUgQXBhY2hlIEx1Y2VuZSBBU0NJSSBGb2xkaW5nIEZpbHRlciBpcyBsaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlXHJcbiAqIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiBTZWUgdGhlXHJcbiAqIE5PVElDRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZ1xyXG4gKiBjb3B5cmlnaHQgb3duZXJzaGlwLiBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byBZb3UgdW5kZXIgdGhlIEFwYWNoZVxyXG4gKiBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW5cclxuICogY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICpcclxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqXHJcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXHJcbiAqIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZVxyXG4gKiBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlclxyXG4gKiB0aGUgTGljZW5zZS5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBBU0NJSUZvbGRlciB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhbml0aXplIHN0cmluZ3MgYnkgY29udmVydGluZyBhbHBoYWJldGljLCBudW1lcmljLCBhbmQgc3ltYm9saWMgVW5pY29kZSBjaGFyYWN0ZXJzIHdoaWNoIGFyZSBub3QgY29udGFpbmVkIGluXHJcbiAgICogdGhlIGZpcnN0IDEyNyBBU0NJSSBjaGFyYWN0ZXJzICh0aGUgXCJCYXNpYyBMYXRpblwiIFVuaWNvZGUgYmxvY2spIGludG8gYSBBU0NJSSBlcXVpdmFsZW50cy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBzdHIgVGhlIHN0cmluZyB0byBiZSBzYW5pdGl6ZWRcclxuICAgKiBAcGFyYW0gcmVwbGFjZW1lbnQgVGhlIGNoYXJhY3RlciBhbiB1bm1hcHBlZCBjaGFyYWN0ZXIgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggb3IgbnVsbCBzaG91bGQgdGhlIG9yaWdpbmFsXHJcbiAgICogY2hhcmFjdGVyIGJlIHJldGFpbmVkXHJcbiAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1yZWR1bmRhbnQtanNkb2NcclxuICAgKiBAcmV0dXJucyBUaGUgc2FuaXRpemVkIHN0cmluZ1xyXG4gICAqL1xyXG4gIHN0YXRpYyBmb2xkKHN0ciA9ICcnLCByZXBsYWNlbWVudCA9ICcnKTogYW55IHtcclxuXHJcbiAgICAgIGxldCBmb2xkZWRTdHIgPSAnJztcclxuXHJcbiAgICAgIGlmIChzdHIgPT09IG51bGwpIHtcclxuICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgfVxyXG4gICAgICBpZiAodHlwZW9mIHN0ciA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgIHJldHVybiAnJyArIHN0cjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpbnB1dCBkYXRhIHR5cGUnKTtcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGNvbnN0IGNoYXJhY3RlciBvZiBzdHIpIHtcclxuICAgICAgICAgIGlmIChjaGFyYWN0ZXIuY2hhckNvZGVBdCgwKSA8IDEyOCkge1xyXG4gICAgICAgICAgICAgIGZvbGRlZFN0ciA9IGZvbGRlZFN0ci5jb25jYXQoY2hhcmFjdGVyKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZm9sZGVkU3RyID0gZm9sZGVkU3RyLmNvbmNhdChBU0NJSUZvbGRlci5yZXBsYWNlQ2hhcihjaGFyYWN0ZXIsIHJlcGxhY2VtZW50KSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZvbGRlZFN0cjtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmVwbGFjZXMgYSBzaW5nbGUgY2hhcmFjdGVyXHJcbiAgICpcclxuICAgKiBAcGFyYW0gY2hhciBUaGUgY2hhcmFjdGVyIHRvIHJlcGxhY2VcclxuICAgKiBAcGFyYW0gcmVwbGFjZW1lbnQgV2hhdCBzdHJpbmcgdW5tYXBwZWQgY2hhcmFjdGVycyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aFxyXG4gICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcmVwbGFjZW1lbnQgb2YgdGhlIGNoYXJhY3RlclxyXG4gICAqL1xyXG4gIHN0YXRpYyByZXBsYWNlQ2hhcihjaGFyLCByZXBsYWNlbWVudCk6IGFueSB7XHJcbiAgICAgIGNvbnN0IGFzY2lpID0gbWFwcGluZy5nZXQoY2hhci5jaGFyQ29kZUF0KDApKTtcclxuICAgICAgcmV0dXJuIGFzY2lpID8gYXNjaWkgOiByZXBsYWNlbWVudDtcclxuICB9XHJcbn1cclxuXHJcbmNvbnN0IG1hcHBpbmcgPSBuZXcgTWFwKFtcclxuICBbMHhDMCwgJ0EnXSxcclxuICBbMHhDMSwgJ0EnXSxcclxuICBbMHhDMiwgJ0EnXSxcclxuICBbMHhDMywgJ0EnXSxcclxuICBbMHhDNCwgJ0EnXSxcclxuICBbMHhDNSwgJ0EnXSxcclxuICBbMHgxMDAsICdBJ10sXHJcbiAgWzB4MTAyLCAnQSddLFxyXG4gIFsweDEwNCwgJ0EnXSxcclxuICBbMHgxOEYsICdBJ10sXHJcbiAgWzB4MUNELCAnQSddLFxyXG4gIFsweDFERSwgJ0EnXSxcclxuICBbMHgxRTAsICdBJ10sXHJcbiAgWzB4MUZBLCAnQSddLFxyXG4gIFsweDIwMCwgJ0EnXSxcclxuICBbMHgyMDIsICdBJ10sXHJcbiAgWzB4MjI2LCAnQSddLFxyXG4gIFsweDIzQSwgJ0EnXSxcclxuICBbMHgxRDAwLCAnQSddLFxyXG4gIFsweDFFMDAsICdBJ10sXHJcbiAgWzB4MUVBMCwgJ0EnXSxcclxuICBbMHgxRUEyLCAnQSddLFxyXG4gIFsweDFFQTQsICdBJ10sXHJcbiAgWzB4MUVBNiwgJ0EnXSxcclxuICBbMHgxRUE4LCAnQSddLFxyXG4gIFsweDFFQUEsICdBJ10sXHJcbiAgWzB4MUVBQywgJ0EnXSxcclxuICBbMHgxRUFFLCAnQSddLFxyXG4gIFsweDFFQjAsICdBJ10sXHJcbiAgWzB4MUVCMiwgJ0EnXSxcclxuICBbMHgxRUI0LCAnQSddLFxyXG4gIFsweDFFQjYsICdBJ10sXHJcbiAgWzB4MjRCNiwgJ0EnXSxcclxuICBbMHhGRjIxLCAnQSddLFxyXG4gIFsweEUwLCAnYSddLFxyXG4gIFsweEUxLCAnYSddLFxyXG4gIFsweEUyLCAnYSddLFxyXG4gIFsweEUzLCAnYSddLFxyXG4gIFsweEU0LCAnYSddLFxyXG4gIFsweEU1LCAnYSddLFxyXG4gIFsweDEwMSwgJ2EnXSxcclxuICBbMHgxMDMsICdhJ10sXHJcbiAgWzB4MTA1LCAnYSddLFxyXG4gIFsweDFDRSwgJ2EnXSxcclxuICBbMHgxREYsICdhJ10sXHJcbiAgWzB4MUUxLCAnYSddLFxyXG4gIFsweDFGQiwgJ2EnXSxcclxuICBbMHgyMDEsICdhJ10sXHJcbiAgWzB4MjAzLCAnYSddLFxyXG4gIFsweDIyNywgJ2EnXSxcclxuICBbMHgyNTAsICdhJ10sXHJcbiAgWzB4MjU5LCAnYSddLFxyXG4gIFsweDI1QSwgJ2EnXSxcclxuICBbMHgxRDhGLCAnYSddLFxyXG4gIFsweDFEOTUsICdhJ10sXHJcbiAgWzB4MUUwMSwgJ2EnXSxcclxuICBbMHgxRTlBLCAnYSddLFxyXG4gIFsweDFFQTEsICdhJ10sXHJcbiAgWzB4MUVBMywgJ2EnXSxcclxuICBbMHgxRUE1LCAnYSddLFxyXG4gIFsweDFFQTcsICdhJ10sXHJcbiAgWzB4MUVBOSwgJ2EnXSxcclxuICBbMHgxRUFCLCAnYSddLFxyXG4gIFsweDFFQUQsICdhJ10sXHJcbiAgWzB4MUVBRiwgJ2EnXSxcclxuICBbMHgxRUIxLCAnYSddLFxyXG4gIFsweDFFQjMsICdhJ10sXHJcbiAgWzB4MUVCNSwgJ2EnXSxcclxuICBbMHgxRUI3LCAnYSddLFxyXG4gIFsweDIwOTAsICdhJ10sXHJcbiAgWzB4MjA5NCwgJ2EnXSxcclxuICBbMHgyNEQwLCAnYSddLFxyXG4gIFsweDJDNjUsICdhJ10sXHJcbiAgWzB4MkM2RiwgJ2EnXSxcclxuICBbMHhGRjQxLCAnYSddLFxyXG4gIFsweEE3MzIsICdBQSddLFxyXG4gIFsweEM2LCAnQUUnXSxcclxuICBbMHgxRTIsICdBRSddLFxyXG4gIFsweDFGQywgJ0FFJ10sXHJcbiAgWzB4MUQwMSwgJ0FFJ10sXHJcbiAgWzB4QTczNCwgJ0FPJ10sXHJcbiAgWzB4QTczNiwgJ0FVJ10sXHJcbiAgWzB4QTczOCwgJ0FWJ10sXHJcbiAgWzB4QTczQSwgJ0FWJ10sXHJcbiAgWzB4QTczQywgJ0FZJ10sXHJcbiAgWzB4MjQ5QywgJyhhKSddLFxyXG4gIFsweEE3MzMsICdhYSddLFxyXG4gIFsweEU2LCAnYWUnXSxcclxuICBbMHgxRTMsICdhZSddLFxyXG4gIFsweDFGRCwgJ2FlJ10sXHJcbiAgWzB4MUQwMiwgJ2FlJ10sXHJcbiAgWzB4QTczNSwgJ2FvJ10sXHJcbiAgWzB4QTczNywgJ2F1J10sXHJcbiAgWzB4QTczOSwgJ2F2J10sXHJcbiAgWzB4QTczQiwgJ2F2J10sXHJcbiAgWzB4QTczRCwgJ2F5J10sXHJcbiAgWzB4MTgxLCAnQiddLFxyXG4gIFsweDE4MiwgJ0InXSxcclxuICBbMHgyNDMsICdCJ10sXHJcbiAgWzB4Mjk5LCAnQiddLFxyXG4gIFsweDFEMDMsICdCJ10sXHJcbiAgWzB4MUUwMiwgJ0InXSxcclxuICBbMHgxRTA0LCAnQiddLFxyXG4gIFsweDFFMDYsICdCJ10sXHJcbiAgWzB4MjRCNywgJ0InXSxcclxuICBbMHhGRjIyLCAnQiddLFxyXG4gIFsweDE4MCwgJ2InXSxcclxuICBbMHgxODMsICdiJ10sXHJcbiAgWzB4MjUzLCAnYiddLFxyXG4gIFsweDFENkMsICdiJ10sXHJcbiAgWzB4MUQ4MCwgJ2InXSxcclxuICBbMHgxRTAzLCAnYiddLFxyXG4gIFsweDFFMDUsICdiJ10sXHJcbiAgWzB4MUUwNywgJ2InXSxcclxuICBbMHgyNEQxLCAnYiddLFxyXG4gIFsweEZGNDIsICdiJ10sXHJcbiAgWzB4MjQ5RCwgJyhiKSddLFxyXG4gIFsweEM3LCAnQyddLFxyXG4gIFsweDEwNiwgJ0MnXSxcclxuICBbMHgxMDgsICdDJ10sXHJcbiAgWzB4MTBBLCAnQyddLFxyXG4gIFsweDEwQywgJ0MnXSxcclxuICBbMHgxODcsICdDJ10sXHJcbiAgWzB4MjNCLCAnQyddLFxyXG4gIFsweDI5NywgJ0MnXSxcclxuICBbMHgxRDA0LCAnQyddLFxyXG4gIFsweDFFMDgsICdDJ10sXHJcbiAgWzB4MjRCOCwgJ0MnXSxcclxuICBbMHhGRjIzLCAnQyddLFxyXG4gIFsweEU3LCAnYyddLFxyXG4gIFsweDEwNywgJ2MnXSxcclxuICBbMHgxMDksICdjJ10sXHJcbiAgWzB4MTBCLCAnYyddLFxyXG4gIFsweDEwRCwgJ2MnXSxcclxuICBbMHgxODgsICdjJ10sXHJcbiAgWzB4MjNDLCAnYyddLFxyXG4gIFsweDI1NSwgJ2MnXSxcclxuICBbMHgxRTA5LCAnYyddLFxyXG4gIFsweDIxODQsICdjJ10sXHJcbiAgWzB4MjREMiwgJ2MnXSxcclxuICBbMHhBNzNFLCAnYyddLFxyXG4gIFsweEE3M0YsICdjJ10sXHJcbiAgWzB4RkY0MywgJ2MnXSxcclxuICBbMHgyNDlFLCAnKGMpJ10sXHJcbiAgWzB4RDAsICdEJ10sXHJcbiAgWzB4MTBFLCAnRCddLFxyXG4gIFsweDExMCwgJ0QnXSxcclxuICBbMHgxODksICdEJ10sXHJcbiAgWzB4MThBLCAnRCddLFxyXG4gIFsweDE4QiwgJ0QnXSxcclxuICBbMHgxRDA1LCAnRCddLFxyXG4gIFsweDFEMDYsICdEJ10sXHJcbiAgWzB4MUUwQSwgJ0QnXSxcclxuICBbMHgxRTBDLCAnRCddLFxyXG4gIFsweDFFMEUsICdEJ10sXHJcbiAgWzB4MUUxMCwgJ0QnXSxcclxuICBbMHgxRTEyLCAnRCddLFxyXG4gIFsweDI0QjksICdEJ10sXHJcbiAgWzB4QTc3OSwgJ0QnXSxcclxuICBbMHhGRjI0LCAnRCddLFxyXG4gIFsweEYwLCAnZCddLFxyXG4gIFsweDEwRiwgJ2QnXSxcclxuICBbMHgxMTEsICdkJ10sXHJcbiAgWzB4MThDLCAnZCddLFxyXG4gIFsweDIyMSwgJ2QnXSxcclxuICBbMHgyNTYsICdkJ10sXHJcbiAgWzB4MjU3LCAnZCddLFxyXG4gIFsweDFENkQsICdkJ10sXHJcbiAgWzB4MUQ4MSwgJ2QnXSxcclxuICBbMHgxRDkxLCAnZCddLFxyXG4gIFsweDFFMEIsICdkJ10sXHJcbiAgWzB4MUUwRCwgJ2QnXSxcclxuICBbMHgxRTBGLCAnZCddLFxyXG4gIFsweDFFMTEsICdkJ10sXHJcbiAgWzB4MUUxMywgJ2QnXSxcclxuICBbMHgyNEQzLCAnZCddLFxyXG4gIFsweEE3N0EsICdkJ10sXHJcbiAgWzB4RkY0NCwgJ2QnXSxcclxuICBbMHgxQzQsICdEWiddLFxyXG4gIFsweDFGMSwgJ0RaJ10sXHJcbiAgWzB4MUM1LCAnRHonXSxcclxuICBbMHgxRjIsICdEeiddLFxyXG4gIFsweDI0OUYsICcoZCknXSxcclxuICBbMHgyMzgsICdkYiddLFxyXG4gIFsweDFDNiwgJ2R6J10sXHJcbiAgWzB4MUYzLCAnZHonXSxcclxuICBbMHgyQTMsICdkeiddLFxyXG4gIFsweDJBNSwgJ2R6J10sXHJcbiAgWzB4QzgsICdFJ10sXHJcbiAgWzB4QzksICdFJ10sXHJcbiAgWzB4Q0EsICdFJ10sXHJcbiAgWzB4Q0IsICdFJ10sXHJcbiAgWzB4MTEyLCAnRSddLFxyXG4gIFsweDExNCwgJ0UnXSxcclxuICBbMHgxMTYsICdFJ10sXHJcbiAgWzB4MTE4LCAnRSddLFxyXG4gIFsweDExQSwgJ0UnXSxcclxuICBbMHgxOEUsICdFJ10sXHJcbiAgWzB4MTkwLCAnRSddLFxyXG4gIFsweDIwNCwgJ0UnXSxcclxuICBbMHgyMDYsICdFJ10sXHJcbiAgWzB4MjI4LCAnRSddLFxyXG4gIFsweDI0NiwgJ0UnXSxcclxuICBbMHgxRDA3LCAnRSddLFxyXG4gIFsweDFFMTQsICdFJ10sXHJcbiAgWzB4MUUxNiwgJ0UnXSxcclxuICBbMHgxRTE4LCAnRSddLFxyXG4gIFsweDFFMUEsICdFJ10sXHJcbiAgWzB4MUUxQywgJ0UnXSxcclxuICBbMHgxRUI4LCAnRSddLFxyXG4gIFsweDFFQkEsICdFJ10sXHJcbiAgWzB4MUVCQywgJ0UnXSxcclxuICBbMHgxRUJFLCAnRSddLFxyXG4gIFsweDFFQzAsICdFJ10sXHJcbiAgWzB4MUVDMiwgJ0UnXSxcclxuICBbMHgxRUM0LCAnRSddLFxyXG4gIFsweDFFQzYsICdFJ10sXHJcbiAgWzB4MjRCQSwgJ0UnXSxcclxuICBbMHgyQzdCLCAnRSddLFxyXG4gIFsweEZGMjUsICdFJ10sXHJcbiAgWzB4RTgsICdlJ10sXHJcbiAgWzB4RTksICdlJ10sXHJcbiAgWzB4RUEsICdlJ10sXHJcbiAgWzB4RUIsICdlJ10sXHJcbiAgWzB4MTEzLCAnZSddLFxyXG4gIFsweDExNSwgJ2UnXSxcclxuICBbMHgxMTcsICdlJ10sXHJcbiAgWzB4MTE5LCAnZSddLFxyXG4gIFsweDExQiwgJ2UnXSxcclxuICBbMHgxREQsICdlJ10sXHJcbiAgWzB4MjA1LCAnZSddLFxyXG4gIFsweDIwNywgJ2UnXSxcclxuICBbMHgyMjksICdlJ10sXHJcbiAgWzB4MjQ3LCAnZSddLFxyXG4gIFsweDI1OCwgJ2UnXSxcclxuICBbMHgyNUIsICdlJ10sXHJcbiAgWzB4MjVDLCAnZSddLFxyXG4gIFsweDI1RCwgJ2UnXSxcclxuICBbMHgyNUUsICdlJ10sXHJcbiAgWzB4MjlBLCAnZSddLFxyXG4gIFsweDFEMDgsICdlJ10sXHJcbiAgWzB4MUQ5MiwgJ2UnXSxcclxuICBbMHgxRDkzLCAnZSddLFxyXG4gIFsweDFEOTQsICdlJ10sXHJcbiAgWzB4MUUxNSwgJ2UnXSxcclxuICBbMHgxRTE3LCAnZSddLFxyXG4gIFsweDFFMTksICdlJ10sXHJcbiAgWzB4MUUxQiwgJ2UnXSxcclxuICBbMHgxRTFELCAnZSddLFxyXG4gIFsweDFFQjksICdlJ10sXHJcbiAgWzB4MUVCQiwgJ2UnXSxcclxuICBbMHgxRUJELCAnZSddLFxyXG4gIFsweDFFQkYsICdlJ10sXHJcbiAgWzB4MUVDMSwgJ2UnXSxcclxuICBbMHgxRUMzLCAnZSddLFxyXG4gIFsweDFFQzUsICdlJ10sXHJcbiAgWzB4MUVDNywgJ2UnXSxcclxuICBbMHgyMDkxLCAnZSddLFxyXG4gIFsweDI0RDQsICdlJ10sXHJcbiAgWzB4MkM3OCwgJ2UnXSxcclxuICBbMHhGRjQ1LCAnZSddLFxyXG4gIFsweDI0QTAsICcoZSknXSxcclxuICBbMHgxOTEsICdGJ10sXHJcbiAgWzB4MUUxRSwgJ0YnXSxcclxuICBbMHgyNEJCLCAnRiddLFxyXG4gIFsweEE3MzAsICdGJ10sXHJcbiAgWzB4QTc3QiwgJ0YnXSxcclxuICBbMHhBN0ZCLCAnRiddLFxyXG4gIFsweEZGMjYsICdGJ10sXHJcbiAgWzB4MTkyLCAnZiddLFxyXG4gIFsweDFENkUsICdmJ10sXHJcbiAgWzB4MUQ4MiwgJ2YnXSxcclxuICBbMHgxRTFGLCAnZiddLFxyXG4gIFsweDFFOUIsICdmJ10sXHJcbiAgWzB4MjRENSwgJ2YnXSxcclxuICBbMHhBNzdDLCAnZiddLFxyXG4gIFsweEZGNDYsICdmJ10sXHJcbiAgWzB4MjRBMSwgJyhmKSddLFxyXG4gIFsweEZCMDAsICdmZiddLFxyXG4gIFswe