UNPKG

ontimize-web-ngx

Version:
328 lines 39.2 kB
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