ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
328 lines • 39.2 kB
JavaScript
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() : '';
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');
}
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvdXRpbC9zcWx0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sUUFBUTtJQXFSWixNQUFNLENBQUMsZUFBZSxDQUFDLElBQVk7UUFDeEMsSUFBSSxLQUFhLENBQUM7UUFDbEIsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdEMsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLEtBQUs7Z0JBQ1IsS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUM7Z0JBQ3JCLE1BQU07WUFDUixLQUFLLFNBQVM7Z0JBQ1osS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3pCLE1BQU07WUFDUixLQUFLLFVBQVU7Z0JBQ2IsS0FBSyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBQzFCLE1BQU07WUFDUixLQUFLLFNBQVM7Z0JBQ1osS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3pCLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3hCLE1BQU07WUFDUixLQUFLLE9BQU87Z0JBQ1YsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7Z0JBQ3ZCLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3hCLE1BQU07WUFDUixLQUFLLFNBQVM7Z0JBQ1osS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3pCLE1BQU07WUFDUixLQUFL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QUFLLEdBQUcsSUFBSSxDQUFDO0FBRWIsZUFBTSxHQUFHLElBQUksQ0FBQztBQUVkLGFBQUksR0FBRyxJQUFJLENBQUM7QUFRWixlQUFNLEdBQUcsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFNRTFR5cGVzIHtcblxuICAvKipcbiAgICogPFA+VGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWRcbiAgICogdG8gYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5CSVQ8L2NvZGU+LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBCSVQgPSAtNztcblxuICAvKipcbiAgICogPFA+VGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWRcbiAgICogdG8gYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5USU5ZSU5UPC9jb2RlPi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgVElOWUlOVCA9IC02O1xuXG4gIC8qKlxuICAgKiA8UD5UaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZFxuICAgKiB0byBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlXG4gICAqIDxjb2RlPlNNQUxMSU5UPC9jb2RlPi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgU01BTExJTlQgPSA1O1xuXG4gIC8qKlxuICAgKiA8UD5UaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZFxuICAgKiB0byBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlXG4gICAqIDxjb2RlPklOVEVHRVI8L2NvZGU+LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBJTlRFR0VSID0gNDtcblxuICAvKipcbiAgICogPFA+VGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWRcbiAgICogdG8gYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5CSUdJTlQ8L2NvZGU+LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBCSUdJTlQgPSAtNTtcblxuICAvKipcbiAgICogPFA+VGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWRcbiAgICogdG8gYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5GTE9BVDwvY29kZT4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEZMT0FUID0gNjtcblxuICAvKipcbiAgICogPFA+VGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWRcbiAgICogdG8gYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5SRUFMPC9jb2RlPi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgUkVBTCA9IDc7XG5cbiAgLyoqXG4gICAqIDxQPlRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkXG4gICAqIHRvIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+RE9VQkxFPC9jb2RlPi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgRE9VQkxFID0gODtcblxuICAvKipcbiAgICogPFA+VGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWRcbiAgICogdG8gYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5OVU1FUklDPC9jb2RlPi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgTlVNRVJJQyA9IDI7XG5cbiAgLyoqXG4gICAqIDxQPlRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkXG4gICAqIHRvIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+REVDSU1BTDwvY29kZT4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIERFQ0lNQUwgPSAzO1xuXG4gIC8qKlxuICAgKiA8UD5UaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZFxuICAgKiB0byBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlXG4gICAqIDxjb2RlPkNIQVI8L2NvZGU+LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBDSEFSID0gMTtcblxuICAvKipcbiAgICogPFA+VGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWRcbiAgICogdG8gYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5WQVJDSEFSPC9jb2RlPi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgVkFSQ0hBUiA9IDEyO1xuXG4gIC8qKlxuICAgKiA8UD5UaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZFxuICAgKiB0byBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlXG4gICAqIDxjb2RlPkxPTkdWQVJDSEFSPC9jb2RlPi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgTE9OR1ZBUkNIQVIgPSAtMTtcblxuICAvKipcbiAgICogPFA+VGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWRcbiAgICogdG8gYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5EQVRFPC9jb2RlPi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgREFURSA9IDkxO1xuXG4gIC8qKlxuICAgKiA8UD5UaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZFxuICAgKiB0byBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlXG4gICAqIDxjb2RlPlRJTUU8L2NvZGU+LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBUSU1FID0gOTI7XG5cbiAgLyoqXG4gICAqIDxQPlRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkXG4gICAqIHRvIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+VElNRVNUQU1QPC9jb2RlPi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgVElNRVNUQU1QID0gOTM7XG5cbiAgLyoqXG4gICAqIDxQPlRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkXG4gICAqIHRvIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+QklOQVJZPC9jb2RlPi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgQklOQVJZID0gLTI7XG5cbiAgLyoqXG4gICAqIDxQPlRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkXG4gICAqIHRvIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+VkFSQklOQVJZPC9jb2RlPi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgVkFSQklOQVJZID0gLTM7XG5cbiAgLyoqXG4gICAqIDxQPlRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkXG4gICAqIHRvIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+TE9OR1ZBUkJJTkFSWTwvY29kZT4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIExPTkdWQVJCSU5BUlkgPSAtNDtcblxuICAvKipcbiAgICogPFA+VGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlXG4gICAqIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdmFsdWVcbiAgICogPGNvZGU+TlVMTDwvY29kZT4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIE5VTEwgPSAwO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdGhhdCBpbmRpY2F0ZXNcbiAgICogdGhhdCB0aGUgU1FMIHR5cGUgaXMgZGF0YWJhc2Utc3BlY2lmaWMgYW5kXG4gICAqIGdldHMgbWFwcGVkIHRvIGEgSmF2YSBvYmplY3QgdGhhdCBjYW4gYmUgYWNjZXNzZWQgdmlhXG4gICAqIHRoZSBtZXRob2RzIDxjb2RlPmdldE9iamVjdDwvY29kZT4gYW5kIDxjb2RlPnNldE9iamVjdDwvY29kZT4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIE9USEVSID0gMTExMTtcblxuICAvKipcbiAgICogVGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWQgdG9cbiAgICogYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZVxuICAgKiA8Y29kZT5KQVZBX09CSkVDVDwvY29kZT4uXG4gICAqIEBzaW5jZSAxLjJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgSkFWQV9PQkpFQ1QgPSAyMDAwO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZCB0b1xuICAgKiBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlXG4gICAqIDxjb2RlPkRJU1RJTkNUPC9jb2RlPi5cbiAgICogQHNpbmNlIDEuMlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBESVNUSU5DVCA9IDIwMDE7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkIHRvXG4gICAqIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+U1RSVUNUPC9jb2RlPi5cbiAgICogQHNpbmNlIDEuMlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBTVFJVQ1QgPSAyMDAyO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZCB0b1xuICAgKiBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlXG4gICAqIDxjb2RlPkFSUkFZPC9jb2RlPi5cbiAgICogQHNpbmNlIDEuMlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBBUlJBWSA9IDIwMDM7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkIHRvXG4gICAqIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+QkxPQjwvY29kZT4uXG4gICAqIEBzaW5jZSAxLjJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgQkxPQiA9IDIwMDQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkIHRvXG4gICAqIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+Q0xPQjwvY29kZT4uXG4gICAqIEBzaW5jZSAxLjJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgQ0xPQiA9IDIwMDU7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkIHRvXG4gICAqIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGVcbiAgICogPGNvZGU+UkVGPC9jb2RlPi5cbiAgICogQHNpbmNlIDEuMlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBSRUYgPSAyMDA2O1xuXG4gIC8qKlxuICAgKiBUaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbXRpbWVzIHJlZmVycmVkIHRvXG4gICAqIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGUgPGNvZGU+REFUQUxJTks8L2NvZGU+LlxuICAgKlxuICAgKiBAc2luY2UgMS40XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIERBVEFMSU5LID0gNzA7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tdGltZXMgcmVmZXJyZWQgdG9cbiAgICogYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZSA8Y29kZT5CT09MRUFOPC9jb2RlPi5cbiAgICpcbiAgICogQHNpbmNlIDEuNFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBCT09MRUFOID0gMTY7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBKREJDIDQuMCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBUaGUgY29uc3RhbnQgaW4gdGhlIEphdmEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIHNvbWV0aW1lcyByZWZlcnJlZCB0b1xuICAgKiBhcyBhIHR5cGUgY29kZSwgdGhhdCBpZGVudGlmaWVzIHRoZSBnZW5lcmljIFNRTCB0eXBlIDxjb2RlPlJPV0lEPC9jb2RlPlxuICAgKlxuICAgKiBAc2luY2UgMS42XG4gICAqXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIFJPV0lEID0gLTg7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkIHRvXG4gICAqIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGUgPGNvZGU+TkNIQVI8L2NvZGU+XG4gICAqXG4gICAqIEBzaW5jZSAxLjZcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgTkNIQVIgPSAtMTU7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkIHRvXG4gICAqIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGUgPGNvZGU+TlZBUkNIQVI8L2NvZGU+LlxuICAgKlxuICAgKiBAc2luY2UgMS42XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIE5WQVJDSEFSID0gLTk7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkIHRvXG4gICAqIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGUgPGNvZGU+TE9OR05WQVJDSEFSPC9jb2RlPi5cbiAgICpcbiAgICogQHNpbmNlIDEuNlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBMT05HTlZBUkNIQVIgPSAtMTY7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdGFudCBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgc29tZXRpbWVzIHJlZmVycmVkIHRvXG4gICAqIGFzIGEgdHlwZSBjb2RlLCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlbmVyaWMgU1FMIHR5cGUgPGNvZGU+TkNMT0I8L2NvZGU+LlxuICAgKlxuICAgKiBAc2luY2UgMS42XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIE5DTE9CID0gMjAxMTtcblxuICBwdWJsaWMgc3RhdGljIEJBU0U2NCA9IDY0NjQ7XG5cbiAgcHVibGljIHN0YXRpYyBVVUlEID0gNjQ2NTtcblxuICAvKipcbiAgICogVGhlIGNvbnN0YW50IGluIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBzb21ldGltZXMgcmVmZXJyZWQgdG9cbiAgICogYXMgYSB0eXBlIGNvZGUsIHRoYXQgaWRlbnRpZmllcyB0aGUgZ2VuZXJpYyBTUUwgdHlwZSA8Y29kZT5YTUw8L2NvZGU+LlxuICAgKlxuICAgKiBAc2luY2UgMS42XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIFNRTFhNTCA9IDIwMDk7XG5cbiAgcHVibGljIHN0YXRpYyBnZXRTUUxUeXBlVmFsdWUodHlwZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgdmFsdWU6IG51bWJlcjtcbiAgICB0eXBlID0gdHlwZSA/IHR5cGUudG9VcHBlckNhc2UoKSA6ICcnO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnQklUJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5CSVQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVElOWUlOVCc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuVElOWUlOVDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdTTUFMTElOVCc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuU01BTExJTlQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSU5URUdFUic6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuSU5URUdFUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdCSUdJTlQnOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLkJJR0lOVDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdGTE9BVCc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuRkxPQVQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUkVBTCc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuUkVBTDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdET1VCTEUnOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLkRPVUJMRTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdOVU1FUklDJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5OVU1FUklDO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RFQ0lNQUwnOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLkRFQ0lNQUw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0hBUic6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuQ0hBUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdWQVJDSEFSJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5WQVJDSEFSO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0xPTkdWQVJDSEFSJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5MT05HVkFSQ0hBUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEQVRFJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5EQVRFO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1RJTUUnOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLlRJTUU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVElNRVNUQU1QJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5USU1FU1RBTVA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQklOQVJZJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5CSU5BUlk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVkFSQklOQVJZJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5WQVJCSU5BUlk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTE9OR1ZBUkJJTkFSWSc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuTE9OR1ZBUkJJTkFSWTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdOVUxMJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5OVUxMO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ09USEVSJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5PVEhFUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdKQVZBX09CSkVDVCc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuSkFWQV9PQkpFQ1Q7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRElTVElOQ1QnOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLkRJU1RJTkNUO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1NUUlVDVCc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuU1RSVUNUO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0FSUkFZJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5BUlJBWTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdCTE9CJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5CTE9CO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NMT0InOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLkNMT0I7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUkVGJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5SRUY7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnREFUQUxJTksnOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLkRBVEFMSU5LO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0JPT0xFQU4nOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLkJPT0xFQU47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUk9XSUQnOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLlJPV0lEO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ05DSEFSJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5OQ0hBUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdOVkFSQ0hBUic6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuTlZBUkNIQVI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTE9OR05WQVJDSEFSJzpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5MT05HTlZBUkNIQVI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTkNMT0InOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLk5DTE9CO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1NRTFhNTCc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuU1FMWE1MO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0JBU0U2NCc6XG4gICAgICAgIHZhbHVlID0gU1FMVHlwZXMuQkFTRTY0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1VVSUQnOlxuICAgICAgICB2YWx1ZSA9IFNRTFR5cGVzLlVVSUQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdmFsdWUgPSBTUUxUeXBlcy5PVEhFUjtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U1FMVHlwZUtleSh0eXBlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGxldCB2YWx1ZTogc3RyaW5nO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBTUUxUeXBlcy5CSVQ6XG4gICAgICAgIHZhbHVlID0gJ0JJVCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5USU5ZSU5UOlxuICAgICAgICB2YWx1ZSA9ICdUSU5ZSU5UJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLlNNQUxMSU5UOlxuICAgICAgICB2YWx1ZSA9ICdTTUFMTElOVCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5JTlRFR0VSOlxuICAgICAgICB2YWx1ZSA9ICdJTlRFR0VSJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLkJJR0lOVDpcbiAgICAgICAgdmFsdWUgPSAnQklHSU5UJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLkZMT0FUOlxuICAgICAgICB2YWx1ZSA9ICdGTE9BVCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5SRUFMOlxuICAgICAgICB2YWx1ZSA9ICdSRUFMJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLkRPVUJMRTpcbiAgICAgICAgdmFsdWUgPSAnRE9VQkxFJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLk5VTUVSSUM6XG4gICAgICAgIHZhbHVlID0gJ05VTUVSSUMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuREVDSU1BTDpcbiAgICAgICAgdmFsdWUgPSAnREVDSU1BTCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5DSEFSOlxuICAgICAgICB2YWx1ZSA9ICdDSEFSJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLlZBUkNIQVI6XG4gICAgICAgIHZhbHVlID0gJ1ZBUkNIQVInO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuTE9OR1ZBUkNIQVI6XG4gICAgICAgIHZhbHVlID0gJ0xPTkdWQVJDSEFSJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLkRBVEU6XG4gICAgICAgIHZhbHVlID0gJ0RBVEUnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuVElNRTpcbiAgICAgICAgdmFsdWUgPSAnVElNRSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5USU1FU1RBTVA6XG4gICAgICAgIHZhbHVlID0gJ1RJTUVTVEFNUCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5CSU5BUlk6XG4gICAgICAgIHZhbHVlID0gJ0JJTkFSWSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5WQVJCSU5BUlk6XG4gICAgICAgIHZhbHVlID0gJ1ZBUkJJTkFSWSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5MT05HVkFSQklOQVJZOlxuICAgICAgICB2YWx1ZSA9ICdMT05HVkFSQklOQVJZJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLk5VTEw6XG4gICAgICAgIHZhbHVlID0gJ05VTEwnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuT1RIRVI6XG4gICAgICAgIHZhbHVlID0gJ09USEVSJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLkpBVkFfT0JKRUNUOlxuICAgICAgICB2YWx1ZSA9ICdKQVZBX09CSkVDVCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5ESVNUSU5DVDpcbiAgICAgICAgdmFsdWUgPSAnRElTVElOQ1QnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuU1RSVUNUOlxuICAgICAgICB2YWx1ZSA9ICdTVFJVQ1QnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuQVJSQVk6XG4gICAgICAgIHZhbHVlID0gJ0FSUkFZJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLkJMT0I6XG4gICAgICAgIHZhbHVlID0gJ0JMT0InO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuQ0xPQjpcbiAgICAgICAgdmFsdWUgPSAnQ0xPQic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5SRUY6XG4gICAgICAgIHZhbHVlID0gJ1JFRic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5EQVRBTElOSzpcbiAgICAgICAgdmFsdWUgPSAnREFUQUxJTksnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuQk9PTEVBTjpcbiAgICAgICAgdmFsdWUgPSAnQk9PTEVBTic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5ST1dJRDpcbiAgICAgICAgdmFsdWUgPSAnUk9XSUQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuTkNIQVI6XG4gICAgICAgIHZhbHVlID0gJ05DSEFSJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNRTFR5cGVzLk5WQVJDSEFSOlxuICAgICAgICB2YWx1ZSA9ICdOVkFSQ0hBUic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5MT05HTlZBUkNIQVI6XG4gICAgICAgIHZhbHVlID0gJ0xPTkdOVkFSQ0hBUic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUUxUeXBlcy5OQ0xPQjpcbiAgICAgICAgdmFsdWUgPSAnTkNMT0InO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuU1FMWE1MOlxuICAgICAgICB2YWx1ZSA9ICdTUUxYTUwnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuQkFTRTY0OlxuICAgICAgICB2YWx1ZSA9ICdCQVNFNjQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1FMVHlwZXMuVVVJRDpcbiAgICAgICAgdmFsdWUgPSAnVVVJRCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdmFsdWUgPSAnT1RIRVInO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZVVzaW5nU1FMVHlwZShhcmc6IGFueSwgdHlwZTogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgdmFsdWUgPSBhcmc7XG4gICAgdHlwZSA9IHR5cGUgPyB0eXBlLnRvVXBwZXJDYXNlKCkgOiAnJztcbiAgICB0cnkge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ1RJTllJTlQnOlxuICAgICAgICBjYXNlICdTTUFMTElOVCc6XG4gICAgICAgIGNhc2UgJ0lOVEVHRVInOlxuICAgICAgICBjYXNlICdCSUdJTlQnOlxuICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGFyZyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0ZMT0FUJzpcbiAgICAgICAgY2FzZSAnUkVBTCc6XG4gICAgICAgIGNhc2UgJ0RPVUJMRSc6XG4gICAgICAgIGNhc2UgJ05VTUVSSUMnOlxuICAgICAgICBjYXNlICdERUNJTUFMJzpcbiAgICAgICAgICB2YWx1ZSA9IHBhcnNlRmxvYXQoYXJnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1NRTFR5cGVzLnBhcnNlVXNpbmdTUUxUeXBlIGVycm9yJyk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNOdW1lcmljU1FMVHlwZShhcmc6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBbXG4gICAgICBTUUxUeXBlcy5USU5ZSU5ULFxuICAgICAgU1FMVHlwZXMuU01BTExJTlQsXG4gICAgICBTUUxUeXBlcy5JTlRFR0VSLFxuICAgICAgU1FMVHlwZXMuQklHSU5ULFxuICAgICAgU1FMVHlwZXMuRkxPQVQsXG4gICAgICBTUUxUeXBlcy5SRUFMLFxuICAgICAgU1FMVHlwZXMuRE9VQkxFLFxuICAgICAgU1FMVHlwZXMuTlVNRVJJQyxcbiAgICAgIFNRTFR5cGVzLkRFQ0lNQUxcbiAgICBdLmluZGV4T2YoYXJnKSAhPT0gLTE7XG4gIH1cblxufVxuIl19