ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
332 lines • 39.8 kB
JavaScript
import { Util } from "./util";
export class SQLTypes {
static getSQLTypeValue(type) {
let value;
type = type ? type.toUpperCase() : '';
switch (type) {
case 'BIT':
value = SQLTypes.BIT;
break;
case 'TINYINT':
value = SQLTypes.TINYINT;
break;
case 'SMALLINT':
value = SQLTypes.SMALLINT;
break;
case 'INTEGER':
value = SQLTypes.INTEGER;
break;
case 'BIGINT':
value = SQLTypes.BIGINT;
break;
case 'FLOAT':
value = SQLTypes.FLOAT;
break;
case 'REAL':
value = SQLTypes.REAL;
break;
case 'DOUBLE':
value = SQLTypes.DOUBLE;
break;
case 'NUMERIC':
value = SQLTypes.NUMERIC;
break;
case 'DECIMAL':
value = SQLTypes.DECIMAL;
break;
case 'CHAR':
value = SQLTypes.CHAR;
break;
case 'VARCHAR':
value = SQLTypes.VARCHAR;
break;
case 'LONGVARCHAR':
value = SQLTypes.LONGVARCHAR;
break;
case 'DATE':
value = SQLTypes.DATE;
break;
case 'TIME':
value = SQLTypes.TIME;
break;
case 'TIMESTAMP':
value = SQLTypes.TIMESTAMP;
break;
case 'BINARY':
value = SQLTypes.BINARY;
break;
case 'VARBINARY':
value = SQLTypes.VARBINARY;
break;
case 'LONGVARBINARY':
value = SQLTypes.LONGVARBINARY;
break;
case 'NULL':
value = SQLTypes.NULL;
break;
case 'OTHER':
value = SQLTypes.OTHER;
break;
case 'JAVA_OBJECT':
value = SQLTypes.JAVA_OBJECT;
break;
case 'DISTINCT':
value = SQLTypes.DISTINCT;
break;
case 'STRUCT':
value = SQLTypes.STRUCT;
break;
case 'ARRAY':
value = SQLTypes.ARRAY;
break;
case 'BLOB':
value = SQLTypes.BLOB;
break;
case 'CLOB':
value = SQLTypes.CLOB;
break;
case 'REF':
value = SQLTypes.REF;
break;
case 'DATALINK':
value = SQLTypes.DATALINK;
break;
case 'BOOLEAN':
value = SQLTypes.BOOLEAN;
break;
case 'ROWID':
value = SQLTypes.ROWID;
break;
case 'NCHAR':
value = SQLTypes.NCHAR;
break;
case 'NVARCHAR':
value = SQLTypes.NVARCHAR;
break;
case 'LONGNVARCHAR':
value = SQLTypes.LONGNVARCHAR;
break;
case 'NCLOB':
value = SQLTypes.NCLOB;
break;
case 'SQLXML':
value = SQLTypes.SQLXML;
break;
case 'BASE64':
value = SQLTypes.BASE64;
break;
case 'UUID':
value = SQLTypes.UUID;
break;
default:
value = SQLTypes.OTHER;
break;
}
return value;
}
static getSQLTypeKey(type) {
let value;
switch (type) {
case SQLTypes.BIT:
value = 'BIT';
break;
case SQLTypes.TINYINT:
value = 'TINYINT';
break;
case SQLTypes.SMALLINT:
value = 'SMALLINT';
break;
case SQLTypes.INTEGER:
value = 'INTEGER';
break;
case SQLTypes.BIGINT:
value = 'BIGINT';
break;
case SQLTypes.FLOAT:
value = 'FLOAT';
break;
case SQLTypes.REAL:
value = 'REAL';
break;
case SQLTypes.DOUBLE:
value = 'DOUBLE';
break;
case SQLTypes.NUMERIC:
value = 'NUMERIC';
break;
case SQLTypes.DECIMAL:
value = 'DECIMAL';
break;
case SQLTypes.CHAR:
value = 'CHAR';
break;
case SQLTypes.VARCHAR:
value = 'VARCHAR';
break;
case SQLTypes.LONGVARCHAR:
value = 'LONGVARCHAR';
break;
case SQLTypes.DATE:
value = 'DATE';
break;
case SQLTypes.TIME:
value = 'TIME';
break;
case SQLTypes.TIMESTAMP:
value = 'TIMESTAMP';
break;
case SQLTypes.BINARY:
value = 'BINARY';
break;
case SQLTypes.VARBINARY:
value = 'VARBINARY';
break;
case SQLTypes.LONGVARBINARY:
value = 'LONGVARBINARY';
break;
case SQLTypes.NULL:
value = 'NULL';
break;
case SQLTypes.OTHER:
value = 'OTHER';
break;
case SQLTypes.JAVA_OBJECT:
value = 'JAVA_OBJECT';
break;
case SQLTypes.DISTINCT:
value = 'DISTINCT';
break;
case SQLTypes.STRUCT:
value = 'STRUCT';
break;
case SQLTypes.ARRAY:
value = 'ARRAY';
break;
case SQLTypes.BLOB:
value = 'BLOB';
break;
case SQLTypes.CLOB:
value = 'CLOB';
break;
case SQLTypes.REF:
value = 'REF';
break;
case SQLTypes.DATALINK:
value = 'DATALINK';
break;
case SQLTypes.BOOLEAN:
value = 'BOOLEAN';
break;
case SQLTypes.ROWID:
value = 'ROWID';
break;
case SQLTypes.NCHAR:
value = 'NCHAR';
break;
case SQLTypes.NVARCHAR:
value = 'NVARCHAR';
break;
case SQLTypes.LONGNVARCHAR:
value = 'LONGNVARCHAR';
break;
case SQLTypes.NCLOB:
value = 'NCLOB';
break;
case SQLTypes.SQLXML:
value = 'SQLXML';
break;
case SQLTypes.BASE64:
value = 'BASE64';
break;
case SQLTypes.UUID:
value = 'UUID';
break;
default:
value = 'OTHER';
break;
}
return value;
}
static parseUsingSQLType(arg, type) {
let value = arg;
type = type ? type.toUpperCase() : '';
if (!Util.isDefined(arg)) {
return value;
}
try {
switch (type) {
case 'TINYINT':
case 'SMALLINT':
case 'INTEGER':
case 'BIGINT':
value = Number(arg);
break;
case 'FLOAT':
case 'REAL':
case 'DOUBLE':
case 'NUMERIC':
case 'DECIMAL':
value = parseFloat(arg);
break;
default:
break;
}
}
catch (err) {
console.error('SQLTypes.parseUsingSQLType error:', err, '| value:', arg, '| type:', type);
}
return value;
}
static isNumericSQLType(arg) {
return [
SQLTypes.TINYINT,
SQLTypes.SMALLINT,
SQLTypes.INTEGER,
SQLTypes.BIGINT,
SQLTypes.FLOAT,
SQLTypes.REAL,
SQLTypes.DOUBLE,
SQLTypes.NUMERIC,
SQLTypes.DECIMAL
].indexOf(arg) !== -1;
}
}
SQLTypes.BIT = -7;
SQLTypes.TINYINT = -6;
SQLTypes.SMALLINT = 5;
SQLTypes.INTEGER = 4;
SQLTypes.BIGINT = -5;
SQLTypes.FLOAT = 6;
SQLTypes.REAL = 7;
SQLTypes.DOUBLE = 8;
SQLTypes.NUMERIC = 2;
SQLTypes.DECIMAL = 3;
SQLTypes.CHAR = 1;
SQLTypes.VARCHAR = 12;
SQLTypes.LONGVARCHAR = -1;
SQLTypes.DATE = 91;
SQLTypes.TIME = 92;
SQLTypes.TIMESTAMP = 93;
SQLTypes.BINARY = -2;
SQLTypes.VARBINARY = -3;
SQLTypes.LONGVARBINARY = -4;
SQLTypes.NULL = 0;
SQLTypes.OTHER = 1111;
SQLTypes.JAVA_OBJECT = 2000;
SQLTypes.DISTINCT = 2001;
SQLTypes.STRUCT = 2002;
SQLTypes.ARRAY = 2003;
SQLTypes.BLOB = 2004;
SQLTypes.CLOB = 2005;
SQLTypes.REF = 2006;
SQLTypes.DATALINK = 70;
SQLTypes.BOOLEAN = 16;
SQLTypes.ROWID = -8;
SQLTypes.NCHAR = -15;
SQLTypes.NVARCHAR = -9;
SQLTypes.LONGNVARCHAR = -16;
SQLTypes.NCLOB = 2011;
SQLTypes.BASE64 = 6464;
SQLTypes.UUID = 6465;
SQLTypes.SQLXML = 2009;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvdXRpbC9zcWx0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlCLE1BQU0sT0FBTyxRQUFRO0lBcVJaLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBWTtRQUN4QyxJQUFJLEtBQWEsQ0FBQztRQUNsQixJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssS0FBSztnQkFDUixLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFDckIsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDekIsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixLQUFLLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztnQkFDMUIsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDekIsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDeEIsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDdkIsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDdEIsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDeEIsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDekIsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDekIsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDdEIsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDekIsTUFBTTtZQUNSLEtBQUssYUFBYTtnQkFDaEIsS0FBSyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7Z0JBQzdCLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLE1BQU07WUFDUixLQUFLLFdBQVc7Z0JBQ2QsS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7Z0JBQzNCLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3hCLE1BQU07WUFDUixLQUFLLFdBQVc7Z0JBQ2QsS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7Z0JBQzNCLE1BQU07WUFDUixLQUFLLGVBQWU7Z0JBQ2xCLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO2dCQUMvQixNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUN0QixNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUN2QixNQUFNO1lBQ1IsS0FBSyxhQUFhO2dCQUNoQixLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztnQkFDN0IsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixLQUFLLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztnQkFDMUIsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDeEIsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDdkIsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDdEIsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDdEIsTUFBTTtZQUNSLEtBQUssS0FBSztnQkFDUixLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFDckIsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixLQUFLLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztnQkFDMUIsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDekIsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDdkIsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDdkIsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixLQUFLLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztnQkFDMUIsTUFBTTtZQUNSLEtBQUssY0FBYztnQkFDakIsS0FBSyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7Z0JBQzlCLE1BQU07WUFDUixLQUFLLE9BQU87Z0JBQ1YsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7Z0JBQ3ZCLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3hCLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3hCLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLE1BQU07WUFDUjtnQkFDRSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDdkIsTUFBTTtTQUNUO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFZO1FBQ3RDLElBQUksS0FBYSxDQUFDO1FBQ2xCLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxRQUFRLENBQUMsR0FBRztnQkFDZixLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUNkLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxPQUFPO2dCQUNuQixLQUFLLEdBQUcsU0FBUyxDQUFDO2dCQUNsQixNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsUUFBUTtnQkFDcEIsS0FBSyxHQUFHLFVBQVUsQ0FBQztnQkFDbkIsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLE9BQU87Z0JBQ25CLEtBQUssR0FBRyxTQUFTLENBQUM7Z0JBQ2xCLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxNQUFNO2dCQUNsQixLQUFLLEdBQUcsUUFBUSxDQUFDO2dCQUNqQixNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsS0FBSztnQkFDakIsS0FBSyxHQUFHLE9BQU8sQ0FBQztnQkFDaEIsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLElBQUk7Z0JBQ2hCLEtBQUssR0FBRyxNQUFNLENBQUM7Z0JBQ2YsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLE1BQU07Z0JBQ2xCLEtBQUssR0FBRyxRQUFRLENBQUM7Z0JBQ2pCLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxPQUFPO2dCQUNuQixLQUFLLEdBQUcsU0FBUyxDQUFDO2dCQUNsQixNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsT0FBTztnQkFDbkIsS0FBSyxHQUFHLFNBQVMsQ0FBQztnQkFDbEIsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLElBQUk7Z0JBQ2hCLEtBQUssR0FBRyxNQUFNLENBQUM7Z0JBQ2YsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLE9BQU87Z0JBQ25CLEtBQUssR0FBRyxTQUFTLENBQUM7Z0JBQ2xCLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxXQUFXO2dCQUN2QixLQUFLLEdBQUcsYUFBYSxDQUFDO2dCQUN0QixNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsSUFBSTtnQkFDaEIsS0FBSyxHQUFHLE1BQU0sQ0FBQztnQkFDZixNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsSUFBSTtnQkFDaEIsS0FBSyxHQUFHLE1BQU0sQ0FBQztnQkFDZixNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsU0FBUztnQkFDckIsS0FBSyxHQUFHLFdBQVcsQ0FBQztnQkFDcEIsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLE1BQU07Z0JBQ2xCLEtBQUssR0FBRyxRQUFRLENBQUM7Z0JBQ2pCLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxTQUFTO2dCQUNyQixLQUFLLEdBQUcsV0FBVyxDQUFDO2dCQUNwQixNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsYUFBYTtnQkFDekIsS0FBSyxHQUFHLGVBQWUsQ0FBQztnQkFDeEIsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLElBQUk7Z0JBQ2hCLEtBQUssR0FBRyxNQUFNLENBQUM7Z0JBQ2YsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLEtBQUs7Z0JBQ2pCLEtBQUssR0FBRyxPQUFPLENBQUM7Z0JBQ2hCLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxXQUFXO2dCQUN2QixLQUFLLEdBQUcsYUFBYSxDQUFDO2dCQUN0QixNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsUUFBUTtnQkFDcEIsS0FBSyxHQUFHLFVBQVUsQ0FBQztnQkFDbkIsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLE1BQU07Z0JBQ2xCLEtBQUssR0FBRyxRQUFRLENBQUM7Z0JBQ2pCLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxLQUFLO2dCQUNqQixLQUFLLEdBQUcsT0FBTyxDQUFDO2dCQUNoQixNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsSUFBSTtnQkFDaEIsS0FBSyxHQUFHLE1BQU0sQ0FBQztnQkFDZixNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsSUFBSTtnQkFDaEIsS0FBSyxHQUFHLE1BQU0sQ0FBQztnQkFDZixNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsR0FBRztnQkFDZixLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUNkLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxRQUFRO2dCQUNwQixLQUFLLEdBQUcsVUFBVSxDQUFDO2dCQUNuQixNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsT0FBTztnQkFDbkIsS0FBSyxHQUFHLFNBQVMsQ0FBQztnQkFDbEIsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLEtBQUs7Z0JBQ2pCLEtBQUssR0FBRyxPQUFPLENBQUM7Z0JBQ2hCLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxLQUFLO2dCQUNqQixLQUFLLEdBQUcsT0FBTyxDQUFDO2dCQUNoQixNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsUUFBUTtnQkFDcEIsS0FBSyxHQUFHLFVBQVUsQ0FBQztnQkFDbkIsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLFlBQVk7Z0JBQ3hCLEtBQUssR0FBRyxjQUFjLENBQUM7Z0JBQ3ZCLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxLQUFLO2dCQUNqQixLQUFLLEdBQUcsT0FBTyxDQUFDO2dCQUNoQixNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsTUFBTTtnQkFDbEIsS0FBSyxHQUFHLFFBQVEsQ0FBQztnQkFDakIsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLE1BQU07Z0JBQ2xCLEtBQUssR0FBRyxRQUFRLENBQUM7Z0JBQ2pCLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxJQUFJO2dCQUNoQixLQUFLLEdBQUcsTUFBTSxDQUFDO2dCQUNmLE1BQU07WUFDUjtnQkFDRSxLQUFLLEdBQUcsT0FBTyxDQUFDO2dCQUNoQixNQUFNO1NBQ1Q7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBUSxFQUFFLElBQVk7UUFDcEQsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJO1lBQ0YsUUFBUSxJQUFJLEVBQUU7Z0JBQ1osS0FBSyxTQUFTLENBQUM7Z0JBQ2YsS0FBSyxVQUFVLENBQUM7Z0JBQ2hCLEtBQUssU0FBUyxDQUFDO2dCQUNmLEtBQUssUUFBUTtvQkFDWCxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNwQixNQUFNO2dCQUNSLEtBQUssT0FBTyxDQUFDO2dCQUNiLEtBQUssTUFBTSxDQUFDO2dCQUNaLEtBQUssUUFBUSxDQUFDO2dCQUNkLEtBQUssU0FBUyxDQUFDO2dCQUNmLEtBQUssU0FBUztvQkFDWixLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN4QixNQUFNO2dCQUNSO29CQUNFLE1BQU07YUFDVDtTQUNGO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMzRjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFXO1FBQ3hDLE9BQU87WUFDTCxRQUFRLENBQUMsT0FBTztZQUNoQixRQUFRLENBQUMsUUFBUTtZQUNqQixRQUFRLENBQUMsT0FBTztZQUNoQixRQUFRLENBQUMsTUFBTTtZQUNmLFFBQVEsQ0FBQyxLQUFLO1lBQ2QsUUFBUSxDQUFDLElBQUk7WUFDYixRQUFRLENBQUMsTUFBTTtZQUNmLFFBQVEsQ0FBQyxPQUFPO1lBQ2hCLFFBQVEsQ0FBQyxPQUFPO1NBQ2pCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7O0FBampCYSxZQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFPVCxnQkFBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBT2IsaUJBQVEsR0FBRyxDQUFDLENBQUM7QUFPYixnQkFBTyxHQUFHLENBQUMsQ0FBQztBQU9aLGVBQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQU9aLGNBQUssR0FBRyxDQUFDLENBQUM7QUFPVixhQUFJLEdBQUcsQ0FBQyxDQUFDO0FBT1QsZUFBTSxHQUFHLENBQUMsQ0FBQztBQU9YLGdCQUFPLEdBQUcsQ0FBQyxDQUFDO0FBT1osZ0JBQU8sR0FBRyxDQUFDLENBQUM7QUFPWixhQUFJLEdBQUcsQ0FBQyxDQUFDO0FBT1QsZ0JBQU8sR0FBRyxFQUFFLENBQUM7QUFPYixvQkFBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBT2pCLGFBQUksR0FBRyxFQUFFLENBQUM7QUFPVixhQUFJLEdBQUcsRUFBRSxDQUFDO0FBT1Ysa0JBQVMsR0FBRyxFQUFFLENBQUM7QUFPZixlQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFPWixrQkFBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBT2Ysc0JBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztBQU9uQixhQUFJLEdBQUcsQ0FBQyxDQUFDO0FBUVQsY0FBSyxHQUFHLElBQUksQ0FBQztBQVFiLG9CQUFXLEdBQUcsSUFBSSxDQUFDO0FBUW5CLGlCQUFRLEdBQUcsSUFBSSxDQUFDO0FBUWhCLGVBQU0sR0FBRyxJQUFJLENBQUM7QUFRZCxjQUFLLEdBQUcsSUFBSSxDQUFDO0FBUWIsYUFBSSxHQUFHLElBQUksQ0FBQztBQVFaLGFBQUksR0FBRyxJQUFJLENBQUM7QUFRWixZQUFHLEdBQUcsSUFBSSxDQUFDO0FBUVgsaUJBQVEsR0FBRyxFQUFFLENBQUM7QUFRZCxnQkFBTyxHQUFHLEVBQUUsQ0FBQztBQVdiLGNBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQVFYLGNBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztBQVFaLGlCQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFRZCxxQkFBWSxHQUFHLENBQUMsRUFBRSxDQUFDO0FBUW5CLGNBQUssR0FBRyxJQUFJLENBQUM7QUFFYixlQUFNLEdBQUcsSUFBSSxDQUFDO0FBRWQsYUFBSSxHQUFHLElBQUksQ0FBQztBQVFaLGVBQU0sR0FBRyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVdGlsIH0gZnJvbSBcIi4vdXRpbFwiO1xuXG5leHBvcnQgY2xhc3MgU1FMVHlwZXMge1xuXG4gIC8qKlxuICAgKiA8UD5UaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZFxuICAgKiB0byBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlXG4gICAqIDxjb2RlPkJJVDwvY29kZT4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEJJVCA9IC03O1xuXG4gIC8qKlxuICAgKiA8UD5UaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZFxuICAgKiB0byBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlXG4gICAqIDxjb2RlPlRJTllJTlQ8L2NvZGU+LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBUSU5ZSU5UID0gLTY7XG5cbiAgLyoqXG4gICAqIDxQPlRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkXG4gICAqIHRvIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+U01BTExJTlQ8L2NvZGU+LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBTTUFMTElOVCA9IDU7XG5cbiAgLyoqXG4gICAqIDxQPlRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkXG4gICAqIHRvIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+SU5URUdFUjwvY29kZT4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIElOVEVHRVIgPSA0O1xuXG4gIC8qKlxuICAgKiA8UD5UaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZFxuICAgKiB0byBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlXG4gICAqIDxjb2RlPkJJR0lOVDwvY29kZT4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEJJR0lOVCA9IC01O1xuXG4gIC8qKlxuICAgKiA8UD5UaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZFxuICAgKiB0byBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlXG4gICAqIDxjb2RlPkZMT0FUPC9jb2RlPi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgRkxPQVQgPSA2O1xuXG4gIC8qKlxuICAgKiA8UD5UaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZFxuICAgKiB0byBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlXG4gICAqIDxjb2RlPlJFQUw8L2NvZGU+LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBSRUFMID0gNztcblxuICAvKipcbiAgICogPFA+VGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWRcbiAgICogdG8gYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5ET1VCTEU8L2NvZGU+LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBET1VCTEUgPSA4O1xuXG4gIC8qKlxuICAgKiA8UD5UaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZFxuICAgKiB0byBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlXG4gICAqIDxjb2RlPk5VTUVSSUM8L2NvZGU+LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBOVU1FUklDID0gMjtcblxuICAvKipcbiAgICogPFA+VGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWRcbiAgICogdG8gYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5ERUNJTUFMPC9jb2RlPi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgREVDSU1BTCA9IDM7XG5cbiAgLyoqXG4gICAqIDxQPlRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkXG4gICAqIHRvIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+Q0hBUjwvY29kZT4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIENIQVIgPSAxO1xuXG4gIC8qKlxuICAgKiA8UD5UaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZFxuICAgKiB0byBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlXG4gICAqIDxjb2RlPlZBUkNIQVI8L2NvZGU+LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBWQVJDSEFSID0gMTI7XG5cbiAgLyoqXG4gICAqIDxQPlRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkXG4gICAqIHRvIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+TE9OR1ZBUkNIQVI8L2NvZGU+LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBMT05HVkFSQ0hBUiA9IC0xO1xuXG4gIC8qKlxuICAgKiA8UD5UaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZFxuICAgKiB0byBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlXG4gICAqIDxjb2RlPkRBVEU8L2NvZGU+LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBEQVRFID0gOTE7XG5cbiAgLyoqXG4gICAqIDxQPlRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkXG4gICAqIHRvIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+VElNRTwvY29kZT4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIFRJTUUgPSA5MjtcblxuICAvKipcbiAgICogPFA+VGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWRcbiAgICogdG8gYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5USU1FU1RBTVA8L2NvZGU+LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBUSU1FU1RBTVAgPSA5MztcblxuICAvKipcbiAgICogPFA+VGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWRcbiAgICogdG8gYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5CSU5BUlk8L2NvZGU+LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBCSU5BUlkgPSAtMjtcblxuICAvKipcbiAgICogPFA+VGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWRcbiAgICogdG8gYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5WQVJCSU5BUlk8L2NvZGU+LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBWQVJCSU5BUlkgPSAtMztcblxuICAvKipcbiAgICogPFA+VGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWRcbiAgICogdG8gYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5MT05HVkFSQklOQVJZPC9jb2RlPi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgTE9OR1ZBUkJJTkFSWSA9IC00O1xuXG4gIC8qKlxuICAgKiA8UD5UaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VcbiAgICogdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB2YWx1ZVxuICAgKiA8Y29kZT5OVUxMPC9jb2RlPi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgTlVMTCA9IDA7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSB0aGF0IGluZGljYXRlc1xuICAgKiB0aGF0IHRoZSBTUUwgdHlwZSBpcyBkYXRhYmFzZS1zcGVjaWZpYyBhbmRcbiAgICogZ2V0cyBtYXBwZWQgdG8gYSBKYXZhIG9iamVjdCB0aGF0IGNhbiBiZSBhY2Nlc3NlZCB2aWFcbiAgICogdGhlIG1ldGhvZHMgPGNvZGU+Z2V0T2JqZWN0PC9jb2RlPiBhbmQgPGNvZGU+c2V0T2JqZWN0PC9jb2RlPi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgT1RIRVIgPSAxMTExO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZCB0b1xuICAgKiBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlXG4gICAqIDxjb2RlPkpBVkFfT0JKRUNUPC9jb2RlPi5cbiAgICogQHNpbmNlIDEuMlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBKQVZBX09CSkVDVCA9IDIwMDA7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkIHRvXG4gICAqIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+RElTVElOQ1Q8L2NvZGU+LlxuICAgKiBAc2luY2UgMS4yXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIERJU1RJTkNUID0gMjAwMTtcblxuICAvKipcbiAgICogVGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWQgdG9cbiAgICogYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5TVFJVQ1Q8L2NvZGU+LlxuICAgKiBAc2luY2UgMS4yXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIFNUUlVDVCA9IDIwMDI7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkIHRvXG4gICAqIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+QVJSQVk8L2NvZGU+LlxuICAgKiBAc2luY2UgMS4yXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEFSUkFZID0gMjAwMztcblxuICAvKipcbiAgICogVGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWQgdG9cbiAgICogYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5CTE9CPC9jb2RlPi5cbiAgICogQHNpbmNlIDEuMlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBCTE9CID0gMjAwNDtcblxuICAvKipcbiAgICogVGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWQgdG9cbiAgICogYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5DTE9CPC9jb2RlPi5cbiAgICogQHNpbmNlIDEuMlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBDTE9CID0gMjAwNTtcblxuICAvKipcbiAgICogVGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWQgdG9cbiAgICogYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5SRUY8L2NvZGU+LlxuICAgKiBAc2luY2UgMS4yXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIFJFRiA9IDIwMDY7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tdGltZXMgcmVmZXJyZWQgdG9cbiAgICogYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZSA8Y29kZT5EQVRBTElOSzwvY29kZT4uXG4gICAqXG4gICAqIEBzaW5jZSAxLjRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgREFUQUxJTksgPSA3MDtcblxuICAvKipcbiAgICogVGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb210aW1lcyByZWZlcnJlZCB0b1xuICAgKiBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlIDxjb2RlPkJPT0xFQU48L2NvZGU+LlxuICAgKlxuICAgKiBAc2luY2UgMS40XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEJPT0xFQU4gPSAxNjtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEpEQkMgNC4wIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkIHRvXG4gICAqIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGUgPGNvZGU+Uk9XSUQ8L2NvZGU+XG4gICAqXG4gICAqIEBzaW5jZSAxLjZcbiAgICpcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgUk9XSUQgPSAtODtcblxuICAvKipcbiAgICogVGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWQgdG9cbiAgICogYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZSA8Y29kZT5OQ0hBUjwvY29kZT5cbiAgICpcbiAgICogQHNpbmNlIDEuNlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBOQ0hBUiA9IC0xNTtcblxuICAvKipcbiAgICogVGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWQgdG9cbiAgICogYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZSA8Y29kZT5OVkFSQ0hBUjwvY29kZT4uXG4gICAqXG4gICAqIEBzaW5jZSAxLjZcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgTlZBUkNIQVIgPSAtOTtcblxuICAvKipcbiAgICogVGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWQgdG9cbiAgICogYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZSA8Y29kZT5MT05HTlZBUkNIQVI8L2NvZGU+LlxuICAgKlxuICAgKiBAc2luY2UgMS42XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIExPTkdOVkFSQ0hBUiA9IC0xNjtcblxuICAvKipcbiAgICogVGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWQgdG9cbiAgICogYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZSA8Y29kZT5OQ0xPQjwvY29kZT4uXG4gICAqXG4gICAqIEBzaW5jZSAxLjZcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgTkNMT0IgPSAyMDExO1xuXG4gIHB1YmxpYyBzdGF0aWMgQkFTRTY0ID0gNjQ2NDtcblxuICBwdWJsaWMgc3RhdGljIFVVSUQgPSA2NDY1O1xuXG4gIC8qKlxuICAgKiBUaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZCB0b1xuICAgKiBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlIDxjb2RlPlhNTDwvY29kZT4uXG4gICAqXG4gICAqIEBzaW5jZSAxLjZcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgU1FMWE1MID0gMjAwOTtcblxuICBwdWJsaWMgc3RhdGljIGdldFNRTFR5cGVWYWx1ZSh0eXBlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCB2YWx1ZTogbnVtYmVyO1xuICAgIHR5cGUgPSB0eXBlID8gdHlwZS50b1VwcGVyQ2FzZSgpIDogJyc7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdCSVQnOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLkJJVDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdUSU5ZSU5UJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5USU5ZSU5UO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1NNQUxMSU5UJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5TTUFMTElOVDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdJTlRFR0VSJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5JTlRFR0VSO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0JJR0lOVCc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuQklHSU5UO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0ZMT0FUJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5GTE9BVDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdSRUFMJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5SRUFMO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RPVUJMRSc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuRE9VQkxFO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ05VTUVSSUMnOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLk5VTUVSSUM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnREVDSU1BTCc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuREVDSU1BTDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDSEFSJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5DSEFSO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1ZBUkNIQVInOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLlZBUkNIQVI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTE9OR1ZBUkNIQVInOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLkxPTkdWQVJDSEFSO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RBVEUnOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLkRBVEU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVElNRSc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuVElNRTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdUSU1FU1RBTVAnOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLlRJTUVTVEFNUDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdCSU5BUlknOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLkJJTkFSWTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdWQVJCSU5BUlknOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLlZBUkJJTkFSWTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdMT05HVkFSQklOQVJZJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5MT05HVkFSQklOQVJZO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ05VTEwnOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLk5VTEw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnT1RIRVInOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLk9USEVSO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0pBVkFfT0JKRUNUJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5KQVZBX09CSkVDVDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdESVNUSU5DVCc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuRElTVElOQ1Q7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnU1RSVUNUJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5TVFJVQ1Q7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQVJSQVknOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLkFSUkFZO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0JMT0InOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLkJMT0I7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0xPQic6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuQ0xPQjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdSRUYnOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLlJFRjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEQVRBTElOSyc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuREFUQUxJTks7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQk9PTEVBTic6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuQk9PTEVBTjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdST1dJRCc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuUk9XSUQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTkNIQVInOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLk5DSEFSO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ05WQVJDSEFSJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5OVkFSQ0hBUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdMT05HTlZBUkNIQVInOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLkxPTkdOVkFSQ0hBUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdOQ0xPQic6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuTkNMT0I7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnU1FMWE1MJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5TUUxYTUw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQkFTRTY0JzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5CQVNFNjQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVVVJRCc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuVVVJRDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLk9USEVSO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRTUUxUeXBlS2V5KHR5cGU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgbGV0IHZhbHVlOiBzdHJpbmc7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFNRTFR5cGVzLkJJVDpcbiAgICAgICAgdmFsdWUgPSAnQklUJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLlRJTllJTlQ6XG4gICAgICAgIHZhbHVlID0gJ1RJTllJTlQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuU01BTExJTlQ6XG4gICAgICAgIHZhbHVlID0gJ1NNQUxMSU5UJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLklOVEVHRVI6XG4gICAgICAgIHZhbHVlID0gJ0lOVEVHRVInO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuQklHSU5UOlxuICAgICAgICB2YWx1ZSA9ICdCSUdJTlQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuRkxPQVQ6XG4gICAgICAgIHZhbHVlID0gJ0ZMT0FUJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLlJFQUw6XG4gICAgICAgIHZhbHVlID0gJ1JFQUwnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuRE9VQkxFOlxuICAgICAgICB2YWx1ZSA9ICdET1VCTEUnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuTlVNRVJJQzpcbiAgICAgICAgdmFsdWUgPSAnTlVNRVJJQyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5ERUNJTUFMOlxuICAgICAgICB2YWx1ZSA9ICdERUNJTUFMJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLkNIQVI6XG4gICAgICAgIHZhbHVlID0gJ0NIQVInO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuVkFSQ0hBUjpcbiAgICAgICAgdmFsdWUgPSAnVkFSQ0hBUic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5MT05HVkFSQ0hBUjpcbiAgICAgICAgdmFsdWUgPSAnTE9OR1ZBUkNIQVInO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuREFURTpcbiAgICAgICAgdmFsdWUgPSAnREFURSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5USU1FOlxuICAgICAgICB2YWx1ZSA9ICdUSU1FJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLlRJTUVTVEFNUDpcbiAgICAgICAgdmFsdWUgPSAnVElNRVNUQU1QJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLkJJTkFSWTpcbiAgICAgICAgdmFsdWUgPSAnQklOQVJZJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLlZBUkJJTkFSWTpcbiAgICAgICAgdmFsdWUgPSAnVkFSQklOQVJZJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLkxPTkdWQVJCSU5BUlk6XG4gICAgICAgIHZhbHVlID0gJ0xPTkdWQVJCSU5BUlknO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuTlVMTDpcbiAgICAgICAgdmFsdWUgPSAnTlVMTCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5PVEhFUjpcbiAgICAgICAgdmFsdWUgPSAnT1RIRVInO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuSkFWQV9PQkpFQ1Q6XG4gICAgICAgIHZhbHVlID0gJ0pBVkFfT0JKRUNUJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLkRJU1RJTkNUOlxuICAgICAgICB2YWx1ZSA9ICdESVNUSU5DVCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5TVFJVQ1Q6XG4gICAgICAgIHZhbHVlID0gJ1NUUlVDVCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5BUlJBWTpcbiAgICAgICAgdmFsdWUgPSAnQVJSQVknO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuQkxPQjpcbiAgICAgICAgdmFsdWUgPSAnQkxPQic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5DTE9COlxuICAgICAgICB2YWx1ZSA9ICdDTE9CJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLlJFRjpcbiAgICAgICAgdmFsdWUgPSAnUkVGJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLkRBVEFMSU5LOlxuICAgICAgICB2YWx1ZSA9ICdEQVRBTElOSyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5CT09MRUFOOlxuICAgICAgICB2YWx1ZSA9ICdCT09MRUFOJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLlJPV0lEOlxuICAgICAgICB2YWx1ZSA9ICdST1dJRCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5OQ0hBUjpcbiAgICAgICAgdmFsdWUgPSAnTkNIQVInO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuTlZBUkNIQVI6XG4gICAgICAgIHZhbHVlID0gJ05WQVJDSEFSJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLkxPTkdOVkFSQ0hBUjpcbiAgICAgICAgdmFsdWUgPSAnTE9OR05WQVJDSEFSJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLk5DTE9COlxuICAgICAgICB2YWx1ZSA9ICdOQ0xPQic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5TUUxYTUw6XG4gICAgICAgIHZhbHVlID0gJ1NRTFhNTCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5CQVNFNjQ6XG4gICAgICAgIHZhbHVlID0gJ0JBU0U2NCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5VVUlEOlxuICAgICAgICB2YWx1ZSA9ICdVVUlEJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB2YWx1ZSA9ICdPVEhFUic7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHBhcnNlVXNpbmdTUUxUeXBlKGFyZzogYW55LCB0eXBlOiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCB2YWx1ZSA9IGFyZztcbiAgICB0eXBlID0gdHlwZSA/IHR5cGUudG9VcHBlckNhc2UoKSA6ICcnO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQoYXJnKSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ1RJTllJTlQnOlxuICAgICAgICBjYXNlICdTTUFMTElOVCc6XG4gICAgICAgIGNhc2UgJ0lOVEVHRVInOlxuICAgICAgICBjYXNlICdCSUdJTlQnOlxuICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGFyZyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0ZMT0FUJzpcbiAgICAgICAgY2FzZSAnUkVBTCc6XG4gICAgICAgIGNhc2UgJ0RPVUJMRSc6XG4gICAgICAgIGNhc2UgJ05VTUVSSUMnOlxuICAgICAgICBjYXNlICdERUNJTUFMJzpcbiAgICAgICAgICB2YWx1ZSA9IHBhcnNlRmxvYXQoYXJnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1NRTFR5cGVzLnBhcnNlVXNpbmdTUUxUeXBlIGVycm9yOicsIGVyciwgJ3wgdmFsdWU6JywgYXJnLCAnfCB0eXBlOicsIHR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzTnVtZXJpY1NRTFR5cGUoYXJnOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gW1xuICAgICAgU1FMVHlwZXMuVElOWUlOVCxcbiAgICAgIFNRTFR5cGVzLlNNQUxMSU5ULFxuICAgICAgU1FMVHlwZXMuSU5URUdFUixcbiAgICAgIFNRTFR5cGVzLkJJR0lOVCxcbiAgICAgIFNRTFR5cGVzLkZMT0FULFxuICAgICAgU1FMVHlwZXMuUkVBTCxcbiAgICAgIFNRTFR5cGVzLkRPVUJMRSxcbiAgICAgIFNRTFR5cGVzLk5VTUVSSUMsXG4gICAgICBTUUxUeXBlcy5ERUNJTUFMXG4gICAgXS5pbmRleE9mKGFyZykgIT09IC0xO1xuICB9XG5cbn1cbiJdfQ==