@lacussoft/cpf-fmt
Advanced tools
Sorry, the diff of this file is not supported yet
| import Bun from 'bun'; | ||
| import { describe, expect, test } from 'bun:test'; | ||
| describe('build in CommonJS', () => { | ||
| const filePath = Bun.resolveSync('../build/index.cjs', import.meta.dir); | ||
| const file = Bun.file(filePath); | ||
| test('file exists', async () => { | ||
| await expect(file.exists()).resolves.toBe(true); | ||
| }); | ||
| test('file contains a "module.exports" assignment', async () => { | ||
| await expect(file.text()).resolves.toContain('module.exports = cpfFmt'); | ||
| }); | ||
| }); | ||
| describe('build in ES Module', () => { | ||
| const filePath = Bun.resolveSync('../build/index.mjs', import.meta.dir); | ||
| const file = Bun.file(filePath); | ||
| test('file exists', async () => { | ||
| await expect(file.exists()).resolves.toBe(true); | ||
| }); | ||
| test('file contains an "export default" expression', async () => { | ||
| await expect(file.text()).resolves.toContain('export { cpfFmt as default }'); | ||
| }); | ||
| }); | ||
| describe('build types', () => { | ||
| const filePath = Bun.resolveSync('../build/index.d.ts', import.meta.dir); | ||
| const file = Bun.file(filePath); | ||
| test('file exists', async () => { | ||
| await expect(file.exists()).resolves.toBe(true); | ||
| }); | ||
| test('file contains an "export default" expression', async () => { | ||
| await expect(file.text()).resolves.toContain('export { cpfFmt as default }'); | ||
| }); | ||
| }); |
| import Bun from 'bun'; | ||
| import { describe, expect, test } from 'bun:test'; | ||
| describe('UMD file', () => { | ||
| const filePath = Bun.resolveSync('../dist/cpf-fmt.js', import.meta.dir); | ||
| const file = Bun.file(filePath); | ||
| test('file exists', async () => { | ||
| await expect(file.exists()).resolves.toBe(true); | ||
| }); | ||
| test('file evaluates to a global function called "cpfFmt"', async () => { | ||
| const fileContent = await file.text(); | ||
| const makeGlobalFunction = new Function(`${fileContent}\nreturn cpfFmt;`); | ||
| const globalFunction = makeGlobalFunction(); | ||
| expect(typeof globalFunction).toBe('function'); | ||
| expect(globalFunction.name).toBe('cpfFmt'); | ||
| expect(globalFunction(12345678910)).toBe('123.456.789-10'); | ||
| }); | ||
| }); | ||
| describe('UMD minified file', () => { | ||
| const filePath = Bun.resolveSync('../dist/cpf-fmt.min.js', import.meta.dir); | ||
| const file = Bun.file(filePath); | ||
| test('file exists', async () => { | ||
| await expect(file.exists()).resolves.toBe(true); | ||
| }); | ||
| test('file evaluates to a global function called "cpfFmt"', async () => { | ||
| const fileContent = await file.text(); | ||
| const makeGlobalFunction = new Function(`${fileContent}\nreturn cpfFmt;`); | ||
| const globalFunction = makeGlobalFunction(); | ||
| expect(typeof globalFunction).toBe('function'); | ||
| expect(globalFunction.name).toBe(''); | ||
| expect(globalFunction(12345678910)).toBe('123.456.789-10'); | ||
| }); | ||
| }); |
| import { expect, test } from 'bun:test'; | ||
| import cpfFmt from '..'; | ||
| test('Option with range start -1 throws TypeError', () => { | ||
| function testCase() { | ||
| return cpfFmt('80976511061', { | ||
| hidden: true, | ||
| hiddenRange: { start: -1 }, | ||
| }); | ||
| } | ||
| expect(testCase).toThrow(TypeError); | ||
| }); | ||
| test('Option with range start greater than 10 throws TypeError', () => { | ||
| function testCase() { | ||
| return cpfFmt('80976511061', { | ||
| hidden: true, | ||
| hiddenRange: { start: 11 }, | ||
| }); | ||
| } | ||
| expect(testCase).toThrow(TypeError); | ||
| }); | ||
| test('Option with range end -1 throws TypeError', () => { | ||
| function testCase() { | ||
| return cpfFmt('80976511061', { | ||
| hidden: true, | ||
| hiddenRange: { end: -1 }, | ||
| }); | ||
| } | ||
| expect(testCase).toThrow(TypeError); | ||
| }); | ||
| test('Option with range end greater than 10 throws TypeError', () => { | ||
| function testCase() { | ||
| return cpfFmt('80976511061', { | ||
| hidden: true, | ||
| hiddenRange: { end: 11 }, | ||
| }); | ||
| } | ||
| expect(testCase).toThrow(TypeError); | ||
| }); | ||
| test('Option with onfail as not a function throws TypeError', () => { | ||
| function testCase() { | ||
| return cpfFmt('80976511061', { onFail: 'testing' }); | ||
| } | ||
| expect(testCase).toThrow(TypeError); | ||
| }); |
| import { expect, test } from 'bun:test'; | ||
| import cpfFmt from '..'; | ||
| test('"809.765.110-61" formats to "809.765.110-61"', () => { | ||
| const cpf = cpfFmt('809.765.110-61'); | ||
| expect(cpf).toBe('809.765.110-61'); | ||
| }); | ||
| test('"80976511061" formats to "809.765.110-61"', () => { | ||
| const cpf = cpfFmt('80976511061'); | ||
| expect(cpf).toBe('809.765.110-61'); | ||
| }); | ||
| test('"809-765-110-61" formats to "809.765.110-61"', () => { | ||
| const cpf = cpfFmt('809-765-110-61'); | ||
| expect(cpf).toBe('809.765.110-61'); | ||
| }); | ||
| test('"809 765 110 61" formats to "809.765.110-61"', () => { | ||
| const cpf = cpfFmt('809 765 110 61'); | ||
| expect(cpf).toBe('809.765.110-61'); | ||
| }); | ||
| test('"80976511061 " formats to "809.765.110-61"', () => { | ||
| const cpf = cpfFmt('80976511061 '); | ||
| expect(cpf).toBe('809.765.110-61'); | ||
| }); | ||
| test('" 80976511061" formats to "809.765.110-61"', () => { | ||
| const cpf = cpfFmt(' 80976511061'); | ||
| expect(cpf).toBe('809.765.110-61'); | ||
| }); | ||
| test('"8.0.9.7.6.5.1.1.0.6.1" formats to "809.765.110-61"', () => { | ||
| const cpf = cpfFmt('8.0.9.7.6.5.1.1.0.6.1'); | ||
| expect(cpf).toBe('809.765.110-61'); | ||
| }); | ||
| test('"8-0-9-7-6-5-1-1-0-6-1" formats to "809.765.110-61"', () => { | ||
| const cpf = cpfFmt('8-0-9-7-6-5-1-1-0-6-1'); | ||
| expect(cpf).toBe('809.765.110-61'); | ||
| }); | ||
| test('"8 0 9 7 6 5 1 1 0 6 1" formats to "809.765.110-61"', () => { | ||
| const cpf = cpfFmt('8 0 9 7 6 5 1 1 0 6 1'); | ||
| expect(cpf).toBe('809.765.110-61'); | ||
| }); | ||
| test('"80976511061abc" formats to "809.765.110-61"', () => { | ||
| const cpf = cpfFmt('80976511061abc'); | ||
| expect(cpf).toBe('809.765.110-61'); | ||
| }); | ||
| test('"809765110 dv 61" formats to "809.765.110-61"', () => { | ||
| const cpf = cpfFmt('809765110 dv 61'); | ||
| expect(cpf).toBe('809.765.110-61'); | ||
| }); | ||
| test('"80976511061" formats to "809765110-61"', () => { | ||
| const cpf = cpfFmt('80976511061', { | ||
| delimiters: { dot: '' }, | ||
| }); | ||
| expect(cpf).toBe('809765110-61'); | ||
| }); | ||
| test('"80976511061" formats to "809.765.110.61"', () => { | ||
| const cpf = cpfFmt('80976511061', { | ||
| delimiters: { dash: '.' }, | ||
| }); | ||
| expect(cpf).toBe('809.765.110.61'); | ||
| }); | ||
| test('"809.765.110-61" formats to "80976511061"', () => { | ||
| const cpf = cpfFmt('809.765.110-61', { | ||
| delimiters: { | ||
| dot: '', | ||
| dash: '', | ||
| }, | ||
| }); | ||
| expect(cpf).toBe('80976511061'); | ||
| }); | ||
| test('"80976511061" formats to "809<765<110>61"', () => { | ||
| const cpf = cpfFmt('80976511061', { | ||
| delimiters: { | ||
| dot: '<', | ||
| dash: '>', | ||
| }, | ||
| escape: true, | ||
| }); | ||
| expect(cpf).toBe('809<765<110>61'); | ||
| }); | ||
| test('"80976511061" formats to "809.***.***-**"', () => { | ||
| const cpf = cpfFmt('80976511061', { | ||
| hidden: true, | ||
| }); | ||
| expect(cpf).toBe('809.***.***-**'); | ||
| }); | ||
| test('"80976511061" formats to "809.765.***-**"', () => { | ||
| const cpf = cpfFmt('80976511061', { | ||
| hidden: true, | ||
| hiddenRange: { start: 6 }, | ||
| }); | ||
| expect(cpf).toBe('809.765.***-**'); | ||
| }); | ||
| test('"80976511061" formats to "809.***.***-61"', () => { | ||
| const cpf = cpfFmt('80976511061', { | ||
| hidden: true, | ||
| hiddenRange: { end: 8 }, | ||
| }); | ||
| expect(cpf).toBe('809.***.***-61'); | ||
| }); | ||
| test('"80976511061" formats to "***.***.***-61"', () => { | ||
| const cpf = cpfFmt('80976511061', { | ||
| hidden: true, | ||
| hiddenRange: { | ||
| start: 0, | ||
| end: 8, | ||
| }, | ||
| }); | ||
| expect(cpf).toBe('***.***.***-61'); | ||
| }); | ||
| test('"80976511061" formats to "809.***.***-*1"', () => { | ||
| const cpf = cpfFmt('80976511061', { | ||
| hidden: true, | ||
| hiddenRange: { | ||
| start: 9, | ||
| end: 3, | ||
| }, | ||
| }); | ||
| expect(cpf).toBe('809.***.***-*1'); | ||
| }); | ||
| test('"80976511061" formats to "809.###.###-##"', () => { | ||
| const cpf = cpfFmt('80976511061', { | ||
| hidden: true, | ||
| hiddenKey: '#', | ||
| }); | ||
| expect(cpf).toBe('809.###.###-##'); | ||
| }); | ||
| test('"80976511061" formats to "809.765.###-##"', () => { | ||
| const cpf = cpfFmt('80976511061', { | ||
| hidden: true, | ||
| hiddenKey: '#', | ||
| hiddenRange: { start: 6 }, | ||
| }); | ||
| expect(cpf).toBe('809.765.###-##'); | ||
| }); | ||
| test('"abc" falls back to "ABC"', () => { | ||
| const cpf = cpfFmt('abc', { | ||
| onFail: (value) => String(value).toUpperCase(), | ||
| }); | ||
| expect(cpf).toBe('ABC'); | ||
| }); |
+6
-0
| # @lacussoft/cpf-fmt | ||
| ## 2.0.2 | ||
| ### Patch Changes | ||
| - ddd33b9: Update overall dependencies. | ||
| ## 2.0.1 | ||
@@ -4,0 +10,0 @@ |
+2
-2
| /** | ||
| * LacusSoft :: cpf-fmt v2.0.1 | ||
| * LacusSoft :: cpf-fmt v2.0.2 | ||
| * | ||
@@ -268,2 +268,2 @@ * @author Julio L. Muller. | ||
| })); | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BmLWZtdC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2h0bWwtZXNjYXBlci9lc20vaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbnVtLW9ubHkvYnVpbGQvaW5kZXguY2pzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RlZXBtZXJnZS9kaXN0L2Nqcy5qcyIsIi4uL3NyYy9tZXJnZS1vcHRpb25zLnRzIiwiLi4vc3JjL2NwZi1mbXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTctcHJlc2VudCBieSBBbmRyZWEgR2lhbW1hcmNoaSAtIEBXZWJSZWZsZWN0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG5jb25zdCB7cmVwbGFjZX0gPSAnJztcblxuLy8gZXNjYXBlXG5jb25zdCBlcyA9IC8mKD86YW1wfCMzOHxsdHwjNjB8Z3R8IzYyfGFwb3N8IzM5fHF1b3R8IzM0KTsvZztcbmNvbnN0IGNhID0gL1smPD4nXCJdL2c7XG5cbmNvbnN0IGVzY2EgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICBcIidcIjogJyYjMzk7JyxcbiAgJ1wiJzogJyZxdW90Oydcbn07XG5jb25zdCBwZSA9IG0gPT4gZXNjYVttXTtcblxuLyoqXG4gKiBTYWZlbHkgZXNjYXBlIEhUTUwgZW50aXRpZXMgc3VjaCBhcyBgJmAsIGA8YCwgYD5gLCBgXCJgLCBhbmQgYCdgLlxuICogQHBhcmFtIHtzdHJpbmd9IGVzIHRoZSBpbnB1dCB0byBzYWZlbHkgZXNjYXBlXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgZXNjYXBlZCBpbnB1dCwgYW5kIGl0ICoqdGhyb3dzKiogYW4gZXJyb3IgaWZcbiAqICB0aGUgaW5wdXQgdHlwZSBpcyB1bmV4cGVjdGVkLCBleGNlcHQgZm9yIGJvb2xlYW4gYW5kIG51bWJlcnMsXG4gKiAgY29udmVydGVkIGFzIHN0cmluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IGVzY2FwZSA9IGVzID0+IHJlcGxhY2UuY2FsbChlcywgY2EsIHBlKTtcblxuXG4vLyB1bmVzY2FwZVxuY29uc3QgdW5lcyA9IHtcbiAgJyZhbXA7JzogJyYnLFxuICAnJiMzODsnOiAnJicsXG4gICcmbHQ7JzogJzwnLFxuICAnJiM2MDsnOiAnPCcsXG4gICcmZ3Q7JzogJz4nLFxuICAnJiM2MjsnOiAnPicsXG4gICcmYXBvczsnOiBcIidcIixcbiAgJyYjMzk7JzogXCInXCIsXG4gICcmcXVvdDsnOiAnXCInLFxuICAnJiMzNDsnOiAnXCInXG59O1xuY29uc3QgY2FwZSA9IG0gPT4gdW5lc1ttXTtcblxuLyoqXG4gKiBTYWZlbHkgdW5lc2NhcGUgcHJldmlvdXNseSBlc2NhcGVkIGVudGl0aWVzIHN1Y2ggYXMgYCZgLCBgPGAsIGA+YCwgYFwiYCxcbiAqIGFuZCBgJ2AuXG4gKiBAcGFyYW0ge3N0cmluZ30gdW4gYSBwcmV2aW91c2x5IGVzY2FwZWQgc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgdW5lc2NhcGVkIGlucHV0LCBhbmQgaXQgKip0aHJvd3MqKiBhbiBlcnJvciBpZlxuICogIHRoZSBpbnB1dCB0eXBlIGlzIHVuZXhwZWN0ZWQsIGV4Y2VwdCBmb3IgYm9vbGVhbiBhbmQgbnVtYmVycyxcbiAqICBjb252ZXJ0ZWQgYXMgc3RyaW5nLlxuICovXG5leHBvcnQgY29uc3QgdW5lc2NhcGUgPSB1biA9PiByZXBsYWNlLmNhbGwodW4sIGVzLCBjYXBlKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gbnVtT25seSh0YXJnZXQpIHtcbiAgcmV0dXJuIFN0cmluZyh0YXJnZXQpLnJlcGxhY2UoL1xcRC9nLCBcIlwiKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBudW1Pbmx5O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lhVzVrWlhndVkycHpJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOXpjbU12Ym5WdExXOXViSGt1ZEhNaVhTd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lablZ1WTNScGIyNGdiblZ0VDI1c2VTaDBZWEpuWlhRNklIVnVhMjV2ZDI0cE9pQnpkSEpwYm1jZ2UxeHVJQ0J5WlhSMWNtNGdVM1J5YVc1bktIUmhjbWRsZENrdWNtVndiR0ZqWlNndlhGeEVMMmNzSUNjbktUdGNibjFjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnYm5WdFQyNXNlVHRjYmlKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMRk5CUVZNc1VVRkJVU3hOUVVGNVFpeEZRVUZCTzBGQlEzaERMRVZCUVVFc1QwRkJUeXhOUVVGUExFTkJRVUVzVFVGQlRTeERRVUZGTEVOQlFVRXNUMEZCUVN4RFFVRlJMRTlCUVU4c1JVRkJSU3hEUVVGQk8wRkJRM3BET3pzN095SjlcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGlzTWVyZ2VhYmxlT2JqZWN0ID0gZnVuY3Rpb24gaXNNZXJnZWFibGVPYmplY3QodmFsdWUpIHtcblx0cmV0dXJuIGlzTm9uTnVsbE9iamVjdCh2YWx1ZSlcblx0XHQmJiAhaXNTcGVjaWFsKHZhbHVlKVxufTtcblxuZnVuY3Rpb24gaXNOb25OdWxsT2JqZWN0KHZhbHVlKSB7XG5cdHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbn1cblxuZnVuY3Rpb24gaXNTcGVjaWFsKHZhbHVlKSB7XG5cdHZhciBzdHJpbmdWYWx1ZSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG5cblx0cmV0dXJuIHN0cmluZ1ZhbHVlID09PSAnW29iamVjdCBSZWdFeHBdJ1xuXHRcdHx8IHN0cmluZ1ZhbHVlID09PSAnW29iamVjdCBEYXRlXSdcblx0XHR8fCBpc1JlYWN0RWxlbWVudCh2YWx1ZSlcbn1cblxuLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iL2I1YWM5NjNmYjc5MWQxMjk4ZTdmMzk2MjM2MzgzYmM5NTVmOTE2YzEvc3JjL2lzb21vcnBoaWMvY2xhc3NpYy9lbGVtZW50L1JlYWN0RWxlbWVudC5qcyNMMjEtTDI1XG52YXIgY2FuVXNlU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuZm9yO1xudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IGNhblVzZVN5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSA6IDB4ZWFjNztcblxuZnVuY3Rpb24gaXNSZWFjdEVsZW1lbnQodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEVcbn1cblxuZnVuY3Rpb24gZW1wdHlUYXJnZXQodmFsKSB7XG5cdHJldHVybiBBcnJheS5pc0FycmF5KHZhbCkgPyBbXSA6IHt9XG59XG5cbmZ1bmN0aW9uIGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkKHZhbHVlLCBvcHRpb25zKSB7XG5cdHJldHVybiAob3B0aW9ucy5jbG9uZSAhPT0gZmFsc2UgJiYgb3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdCh2YWx1ZSkpXG5cdFx0PyBkZWVwbWVyZ2UoZW1wdHlUYXJnZXQodmFsdWUpLCB2YWx1ZSwgb3B0aW9ucylcblx0XHQ6IHZhbHVlXG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRBcnJheU1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG5cdHJldHVybiB0YXJnZXQuY29uY2F0KHNvdXJjZSkubWFwKGZ1bmN0aW9uKGVsZW1lbnQpIHtcblx0XHRyZXR1cm4gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQoZWxlbWVudCwgb3B0aW9ucylcblx0fSlcbn1cblxuZnVuY3Rpb24gZ2V0TWVyZ2VGdW5jdGlvbihrZXksIG9wdGlvbnMpIHtcblx0aWYgKCFvcHRpb25zLmN1c3RvbU1lcmdlKSB7XG5cdFx0cmV0dXJuIGRlZXBtZXJnZVxuXHR9XG5cdHZhciBjdXN0b21NZXJnZSA9IG9wdGlvbnMuY3VzdG9tTWVyZ2Uoa2V5KTtcblx0cmV0dXJuIHR5cGVvZiBjdXN0b21NZXJnZSA9PT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbU1lcmdlIDogZGVlcG1lcmdlXG59XG5cbmZ1bmN0aW9uIGdldEVudW1lcmFibGVPd25Qcm9wZXJ0eVN5bWJvbHModGFyZ2V0KSB7XG5cdHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzXG5cdFx0PyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHRhcmdldCkuZmlsdGVyKGZ1bmN0aW9uKHN5bWJvbCkge1xuXHRcdFx0cmV0dXJuIE9iamVjdC5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHRhcmdldCwgc3ltYm9sKVxuXHRcdH0pXG5cdFx0OiBbXVxufVxuXG5mdW5jdGlvbiBnZXRLZXlzKHRhcmdldCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXModGFyZ2V0KS5jb25jYXQoZ2V0RW51bWVyYWJsZU93blByb3BlcnR5U3ltYm9scyh0YXJnZXQpKVxufVxuXG5mdW5jdGlvbiBwcm9wZXJ0eUlzT25PYmplY3Qob2JqZWN0LCBwcm9wZXJ0eSkge1xuXHR0cnkge1xuXHRcdHJldHVybiBwcm9wZXJ0eSBpbiBvYmplY3Rcblx0fSBjYXRjaChfKSB7XG5cdFx0cmV0dXJuIGZhbHNlXG5cdH1cbn1cblxuLy8gUHJvdGVjdHMgZnJvbSBwcm90b3R5cGUgcG9pc29uaW5nIGFuZCB1bmV4cGVjdGVkIG1lcmdpbmcgdXAgdGhlIHByb3RvdHlwZSBjaGFpbi5cbmZ1bmN0aW9uIHByb3BlcnR5SXNVbnNhZmUodGFyZ2V0LCBrZXkpIHtcblx0cmV0dXJuIHByb3BlcnR5SXNPbk9iamVjdCh0YXJnZXQsIGtleSkgLy8gUHJvcGVydGllcyBhcmUgc2FmZSB0byBtZXJnZSBpZiB0aGV5IGRvbid0IGV4aXN0IGluIHRoZSB0YXJnZXQgeWV0LFxuXHRcdCYmICEoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodGFyZ2V0LCBrZXkpIC8vIHVuc2FmZSBpZiB0aGV5IGV4aXN0IHVwIHRoZSBwcm90b3R5cGUgY2hhaW4sXG5cdFx0XHQmJiBPYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0YXJnZXQsIGtleSkpIC8vIGFuZCBhbHNvIHVuc2FmZSBpZiB0aGV5J3JlIG5vbmVudW1lcmFibGUuXG59XG5cbmZ1bmN0aW9uIG1lcmdlT2JqZWN0KHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG5cdHZhciBkZXN0aW5hdGlvbiA9IHt9O1xuXHRpZiAob3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdCh0YXJnZXQpKSB7XG5cdFx0Z2V0S2V5cyh0YXJnZXQpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG5cdFx0XHRkZXN0aW5hdGlvbltrZXldID0gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQodGFyZ2V0W2tleV0sIG9wdGlvbnMpO1xuXHRcdH0pO1xuXHR9XG5cdGdldEtleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuXHRcdGlmIChwcm9wZXJ0eUlzVW5zYWZlKHRhcmdldCwga2V5KSkge1xuXHRcdFx0cmV0dXJuXG5cdFx0fVxuXG5cdFx0aWYgKHByb3BlcnR5SXNPbk9iamVjdCh0YXJnZXQsIGtleSkgJiYgb3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdChzb3VyY2Vba2V5XSkpIHtcblx0XHRcdGRlc3RpbmF0aW9uW2tleV0gPSBnZXRNZXJnZUZ1bmN0aW9uKGtleSwgb3B0aW9ucykodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldLCBvcHRpb25zKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGVzdGluYXRpb25ba2V5XSA9IGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkKHNvdXJjZVtrZXldLCBvcHRpb25zKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gZGVzdGluYXRpb25cbn1cblxuZnVuY3Rpb24gZGVlcG1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG5cdG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXHRvcHRpb25zLmFycmF5TWVyZ2UgPSBvcHRpb25zLmFycmF5TWVyZ2UgfHwgZGVmYXVsdEFycmF5TWVyZ2U7XG5cdG9wdGlvbnMuaXNNZXJnZWFibGVPYmplY3QgPSBvcHRpb25zLmlzTWVyZ2VhYmxlT2JqZWN0IHx8IGlzTWVyZ2VhYmxlT2JqZWN0O1xuXHQvLyBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZCBpcyBhZGRlZCB0byBgb3B0aW9uc2Agc28gdGhhdCBjdXN0b20gYXJyYXlNZXJnZSgpXG5cdC8vIGltcGxlbWVudGF0aW9ucyBjYW4gdXNlIGl0LiBUaGUgY2FsbGVyIG1heSBub3QgcmVwbGFjZSBpdC5cblx0b3B0aW9ucy5jbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZCA9IGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkO1xuXG5cdHZhciBzb3VyY2VJc0FycmF5ID0gQXJyYXkuaXNBcnJheShzb3VyY2UpO1xuXHR2YXIgdGFyZ2V0SXNBcnJheSA9IEFycmF5LmlzQXJyYXkodGFyZ2V0KTtcblx0dmFyIHNvdXJjZUFuZFRhcmdldFR5cGVzTWF0Y2ggPSBzb3VyY2VJc0FycmF5ID09PSB0YXJnZXRJc0FycmF5O1xuXG5cdGlmICghc291cmNlQW5kVGFyZ2V0VHlwZXNNYXRjaCkge1xuXHRcdHJldHVybiBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZChzb3VyY2UsIG9wdGlvbnMpXG5cdH0gZWxzZSBpZiAoc291cmNlSXNBcnJheSkge1xuXHRcdHJldHVybiBvcHRpb25zLmFycmF5TWVyZ2UodGFyZ2V0LCBzb3VyY2UsIG9wdGlvbnMpXG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIG1lcmdlT2JqZWN0KHRhcmdldCwgc291cmNlLCBvcHRpb25zKVxuXHR9XG59XG5cbmRlZXBtZXJnZS5hbGwgPSBmdW5jdGlvbiBkZWVwbWVyZ2VBbGwoYXJyYXksIG9wdGlvbnMpIHtcblx0aWYgKCFBcnJheS5pc0FycmF5KGFycmF5KSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGFuIGFycmF5Jylcblx0fVxuXG5cdHJldHVybiBhcnJheS5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgbmV4dCkge1xuXHRcdHJldHVybiBkZWVwbWVyZ2UocHJldiwgbmV4dCwgb3B0aW9ucylcblx0fSwge30pXG59O1xuXG52YXIgZGVlcG1lcmdlXzEgPSBkZWVwbWVyZ2U7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVlcG1lcmdlXzE7XG4iLCJpbXBvcnQgbWVyZ2VEZWVwIGZyb20gJ2RlZXBtZXJnZSc7XG5cbnR5cGUgRGVlcFBhcnRpYWw8VD4gPSB7XG4gIFtQIGluIGtleW9mIFRdPzogRGVlcFBhcnRpYWw8VFtQXT47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdHVhbENwZkZvcm1hdHRpbmdPcHRpb25zPE9uRXJyRmFsbGJhY2s+IHtcbiAgZGVsaW1pdGVyczoge1xuICAgIGRhc2g6IHN0cmluZztcbiAgICBkb3Q6IHN0cmluZztcbiAgfTtcbiAgZXNjYXBlOiBib29sZWFuO1xuICBoaWRkZW46IGJvb2xlYW47XG4gIGhpZGRlbktleTogc3RyaW5nO1xuICBoaWRkZW5SYW5nZToge1xuICAgIGVuZDogbnVtYmVyO1xuICAgIHN0YXJ0OiBudW1iZXI7XG4gIH07XG4gIG9uRmFpbDogKHZhbHVlOiBzdHJpbmcsIGVycm9yOiBFcnJvcikgPT4gT25FcnJGYWxsYmFjaztcbn1cblxuZXhwb3J0IHR5cGUgQ3BmRm9ybWF0dGluZ09wdGlvbnM8T25FcnJGYWxsYmFjaz4gPSBEZWVwUGFydGlhbDxcbiAgQWN0dWFsQ3BmRm9ybWF0dGluZ09wdGlvbnM8T25FcnJGYWxsYmFjaz5cbj47XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBBY3R1YWxDcGZGb3JtYXR0aW5nT3B0aW9uczxzdHJpbmc+ID0ge1xuICBkZWxpbWl0ZXJzOiB7XG4gICAgZG90OiAnLicsXG4gICAgZGFzaDogJy0nLFxuICB9LFxuICBoaWRkZW5SYW5nZToge1xuICAgIHN0YXJ0OiAzLFxuICAgIGVuZDogMTAsXG4gIH0sXG4gIG9uRmFpbDogKHZhbHVlKSA9PiB2YWx1ZSxcbiAgaGlkZGVuS2V5OiAnKicsXG4gIGhpZGRlbjogZmFsc2UsXG4gIGVzY2FwZTogZmFsc2UsXG59O1xuXG4vKipcbiAqIE1lcmdlIGN1c3RvbSBvcHRpb25zIHRvIHRoZSBkZWZhdWx0IG9uZXMuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlT3B0aW9uczxPbkVyckZhbGxiYWNrPihcbiAgY3VzdG9tT3B0aW9uczogQ3BmRm9ybWF0dGluZ09wdGlvbnM8T25FcnJGYWxsYmFjaz4gPSB7fSxcbik6IEFjdHVhbENwZkZvcm1hdHRpbmdPcHRpb25zPE9uRXJyRmFsbGJhY2s+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IG1lcmdlRGVlcChcbiAgICBkZWZhdWx0T3B0aW9ucyxcbiAgICBjdXN0b21PcHRpb25zLFxuICApIGFzIEFjdHVhbENwZkZvcm1hdHRpbmdPcHRpb25zPE9uRXJyRmFsbGJhY2s+O1xuXG4gIGlmIChvcHRpb25zLmhpZGRlbikge1xuICAgIGlmIChcbiAgICAgIGlzTmFOKG9wdGlvbnMuaGlkZGVuUmFuZ2Uuc3RhcnQpIHx8XG4gICAgICBvcHRpb25zLmhpZGRlblJhbmdlLnN0YXJ0IDwgMCB8fFxuICAgICAgb3B0aW9ucy5oaWRkZW5SYW5nZS5zdGFydCA+IDEwXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdPcHRpb24gXCJoaWRkZW5SYW5nZS5zdGFydFwiIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxMC4nKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBpc05hTihvcHRpb25zLmhpZGRlblJhbmdlLmVuZCkgfHxcbiAgICAgIG9wdGlvbnMuaGlkZGVuUmFuZ2UuZW5kIDwgMCB8fFxuICAgICAgb3B0aW9ucy5oaWRkZW5SYW5nZS5lbmQgPiAxMFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT3B0aW9uIFwiaGlkZGVuUmFuZ2UuZW5kXCIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEwLicpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmhpZGRlblJhbmdlLnN0YXJ0ID4gb3B0aW9ucy5oaWRkZW5SYW5nZS5lbmQpIHtcbiAgICAgIGNvbnN0IGF1eCA9IG9wdGlvbnMuaGlkZGVuUmFuZ2Uuc3RhcnQ7XG4gICAgICBvcHRpb25zLmhpZGRlblJhbmdlLnN0YXJ0ID0gb3B0aW9ucy5oaWRkZW5SYW5nZS5lbmQ7XG4gICAgICBvcHRpb25zLmhpZGRlblJhbmdlLmVuZCA9IGF1eDtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIG9wdGlvbnMub25GYWlsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIG9wdGlvbiBcIm9uRmFpbFwiIG11c3QgYmUgYSBjYWxsYmFjayBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIHJldHVybiBvcHRpb25zO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZXJnZU9wdGlvbnM7XG4iLCJpbXBvcnQgeyBlc2NhcGUgYXMgZXNjYXBlSFRNTCB9IGZyb20gJ2h0bWwtZXNjYXBlcic7XG5pbXBvcnQgbnVtT25seSBmcm9tICdudW0tb25seSc7XG5cbmltcG9ydCBtZXJnZU9wdGlvbnMgZnJvbSAnLi9tZXJnZS1vcHRpb25zJztcbmltcG9ydCB0eXBlIHsgQ3BmRm9ybWF0dGluZ09wdGlvbnMgfSBmcm9tICcuL21lcmdlLW9wdGlvbnMnO1xuXG4vKipcbiAqIEZvcm1hdCBhIGdpdmVuIENQRiBjaGFyIHNlcXVlbmNlLlxuICovXG5mdW5jdGlvbiBjcGZGbXQ8T25FcnJGYWxsYmFjayA9IHN0cmluZz4oXG4gIGNwZlN0cmluZzogc3RyaW5nLFxuICBvcHRpb25zPzogQ3BmRm9ybWF0dGluZ09wdGlvbnM8T25FcnJGYWxsYmFjaz4sXG4pOiBzdHJpbmcge1xuICBjb25zdCBDUEZfTEVOR1RIID0gMTE7XG4gIGNvbnN0IGNwZkFycmF5ID0gbnVtT25seShjcGZTdHJpbmcpLnNwbGl0KCcnKTtcbiAgY29uc3QgY3VzdG9tT3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhvcHRpb25zKTtcblxuICBpZiAoY3BmQXJyYXkubGVuZ3RoICE9PSBDUEZfTEVOR1RIKSB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYFBhcmFtZXRlciBcIiR7Y3BmU3RyaW5nfVwiIGRvZXMgbm90IGNvbnRhaW4gJHtDUEZfTEVOR1RIfSBkaWdpdHMuYCk7XG5cbiAgICByZXR1cm4gY3VzdG9tT3B0aW9ucy5vbkZhaWwoY3BmU3RyaW5nLCBlcnJvcikgYXMgc3RyaW5nO1xuICB9XG5cbiAgaWYgKGN1c3RvbU9wdGlvbnMuaGlkZGVuKSB7XG4gICAgZm9yIChsZXQgaSA9IGN1c3RvbU9wdGlvbnMuaGlkZGVuUmFuZ2Uuc3RhcnQ7IGkgPD0gY3VzdG9tT3B0aW9ucy5oaWRkZW5SYW5nZS5lbmQ7IGkrKykge1xuICAgICAgY3BmQXJyYXlbaV0gPSBjdXN0b21PcHRpb25zLmhpZGRlbktleTtcbiAgICB9XG4gIH1cblxuICBjcGZBcnJheS5zcGxpY2UoOSwgMCwgY3VzdG9tT3B0aW9ucy5kZWxpbWl0ZXJzLmRhc2gpO1xuICBjcGZBcnJheS5zcGxpY2UoNiwgMCwgY3VzdG9tT3B0aW9ucy5kZWxpbWl0ZXJzLmRvdCk7XG4gIGNwZkFycmF5LnNwbGljZSgzLCAwLCBjdXN0b21PcHRpb25zLmRlbGltaXRlcnMuZG90KTtcbiAgY29uc3QgY3BmUHJldHR5ID0gY3BmQXJyYXkuam9pbignJyk7XG5cbiAgaWYgKGN1c3RvbU9wdGlvbnMuZXNjYXBlKSB7XG4gICAgcmV0dXJuIGVzY2FwZUhUTUwoY3BmUHJldHR5KTtcbiAgfVxuXG4gIHJldHVybiBjcGZQcmV0dHk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNwZkZtdDtcbiJdLCJuYW1lcyI6WyJyZXBsYWNlIiwiY2EiLCJlc2NhIiwicGUiLCJtIiwiZXNjYXBlIiwiZXMiLCJjYWxsIiwiaXNNZXJnZWFibGVPYmplY3QiLCJ2YWx1ZSIsImlzTm9uTnVsbE9iamVjdCIsImlzU3BlY2lhbCIsInN0cmluZ1ZhbHVlIiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJpc1JlYWN0RWxlbWVudCIsImNhblVzZVN5bWJvbCIsIlN5bWJvbCIsImZvciIsIlJFQUNUX0VMRU1FTlRfVFlQRSIsIiQkdHlwZW9mIiwiZW1wdHlUYXJnZXQiLCJ2YWwiLCJBcnJheSIsImlzQXJyYXkiLCJjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZCIsIm9wdGlvbnMiLCJjbG9uZSIsImRlZXBtZXJnZSIsImRlZmF1bHRBcnJheU1lcmdlIiwidGFyZ2V0Iiwic291cmNlIiwiY29uY2F0IiwibWFwIiwiZWxlbWVudCIsImdldE1lcmdlRnVuY3Rpb24iLCJrZXkiLCJjdXN0b21NZXJnZSIsImdldEVudW1lcmFibGVPd25Qcm9wZXJ0eVN5bWJvbHMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJzeW1ib2wiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImdldEtleXMiLCJrZXlzIiwicHJvcGVydHlJc09uT2JqZWN0Iiwib2JqZWN0IiwicHJvcGVydHkiLCJfIiwicHJvcGVydHlJc1Vuc2FmZSIsImhhc093blByb3BlcnR5IiwibWVyZ2VPYmplY3QiLCJkZXN0aW5hdGlvbiIsImZvckVhY2giLCJhcnJheU1lcmdlIiwic291cmNlSXNBcnJheSIsInRhcmdldElzQXJyYXkiLCJzb3VyY2VBbmRUYXJnZXRUeXBlc01hdGNoIiwiYWxsIiwiZGVlcG1lcmdlQWxsIiwiYXJyYXkiLCJFcnJvciIsInJlZHVjZSIsInByZXYiLCJuZXh0IiwiZGVlcG1lcmdlXzEiLCJjanMiLCJkZWZhdWx0T3B0aW9ucyIsImRlbGltaXRlcnMiLCJkb3QiLCJkYXNoIiwiaGlkZGVuUmFuZ2UiLCJzdGFydCIsImVuZCIsIm9uRmFpbCIsImhpZGRlbktleSIsImhpZGRlbiIsIm1lcmdlT3B0aW9ucyIsImN1c3RvbU9wdGlvbnMiLCJtZXJnZURlZXAiLCJpc05hTiIsIlR5cGVFcnJvciIsImF1eCIsImNwZkZtdCIsImNwZlN0cmluZyIsIkNQRl9MRU5HVEgiLCJjcGZBcnJheSIsIm51bU9ubHkiLCJzcGxpdCIsImxlbmd0aCIsImVycm9yIiwiaSIsInNwbGljZSIsImNwZlByZXR0eSIsImpvaW4iLCJlc2NhcGVIVE1MIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0VBQUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztFQUVBLE1BQU07RUFBQ0EsRUFBQUE7RUFBTyxDQUFDLEdBQUcsRUFBRTtFQUlwQixNQUFNQyxFQUFFLEdBQUcsVUFBVTtFQUVyQixNQUFNQyxJQUFJLEdBQUc7RUFDWCxFQUFBLEdBQUcsRUFBRSxPQUFPO0VBQ1osRUFBQSxHQUFHLEVBQUUsTUFBTTtFQUNYLEVBQUEsR0FBRyxFQUFFLE1BQU07RUFDWCxFQUFBLEdBQUcsRUFBRSxPQUFPO0VBQ1osRUFBQSxHQUFHLEVBQUU7RUFDUCxDQUFDO0VBQ0QsTUFBTUMsRUFBRSxHQUFHQyxDQUFDLElBQUlGLElBQUksQ0FBQ0UsQ0FBQyxDQUFDOztFQUV2QjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNPLE1BQU1DLE1BQU0sR0FBR0MsRUFBRSxJQUFJTixPQUFPLENBQUNPLElBQUksQ0FBQ0QsRUFBRSxFQUFFTCxFQUFFLEVBQUVFLEVBQUUsQ0FBQzs7Ozs7Ozs7Ozs7OztHQzFDcEQsU0FBUyxPQUFPLENBQUMsTUFBTSxFQUFFO0tBQ3ZCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FB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 | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BmLWZtdC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2h0bWwtZXNjYXBlci9lc20vaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbnVtLW9ubHkvYnVpbGQvaW5kZXguY2pzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RlZXBtZXJnZS9kaXN0L2Nqcy5qcyIsIi4uL3NyYy9tZXJnZS1vcHRpb25zLnRzIiwiLi4vc3JjL2NwZi1mbXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTctcHJlc2VudCBieSBBbmRyZWEgR2lhbW1hcmNoaSAtIEBXZWJSZWZsZWN0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG5jb25zdCB7cmVwbGFjZX0gPSAnJztcblxuLy8gZXNjYXBlXG5jb25zdCBlcyA9IC8mKD86YW1wfCMzOHxsdHwjNjB8Z3R8IzYyfGFwb3N8IzM5fHF1b3R8IzM0KTsvZztcbmNvbnN0IGNhID0gL1smPD4nXCJdL2c7XG5cbmNvbnN0IGVzY2EgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICBcIidcIjogJyYjMzk7JyxcbiAgJ1wiJzogJyZxdW90Oydcbn07XG5jb25zdCBwZSA9IG0gPT4gZXNjYVttXTtcblxuLyoqXG4gKiBTYWZlbHkgZXNjYXBlIEhUTUwgZW50aXRpZXMgc3VjaCBhcyBgJmAsIGA8YCwgYD5gLCBgXCJgLCBhbmQgYCdgLlxuICogQHBhcmFtIHtzdHJpbmd9IGVzIHRoZSBpbnB1dCB0byBzYWZlbHkgZXNjYXBlXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgZXNjYXBlZCBpbnB1dCwgYW5kIGl0ICoqdGhyb3dzKiogYW4gZXJyb3IgaWZcbiAqICB0aGUgaW5wdXQgdHlwZSBpcyB1bmV4cGVjdGVkLCBleGNlcHQgZm9yIGJvb2xlYW4gYW5kIG51bWJlcnMsXG4gKiAgY29udmVydGVkIGFzIHN0cmluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IGVzY2FwZSA9IGVzID0+IHJlcGxhY2UuY2FsbChlcywgY2EsIHBlKTtcblxuXG4vLyB1bmVzY2FwZVxuY29uc3QgdW5lcyA9IHtcbiAgJyZhbXA7JzogJyYnLFxuICAnJiMzODsnOiAnJicsXG4gICcmbHQ7JzogJzwnLFxuICAnJiM2MDsnOiAnPCcsXG4gICcmZ3Q7JzogJz4nLFxuICAnJiM2MjsnOiAnPicsXG4gICcmYXBvczsnOiBcIidcIixcbiAgJyYjMzk7JzogXCInXCIsXG4gICcmcXVvdDsnOiAnXCInLFxuICAnJiMzNDsnOiAnXCInXG59O1xuY29uc3QgY2FwZSA9IG0gPT4gdW5lc1ttXTtcblxuLyoqXG4gKiBTYWZlbHkgdW5lc2NhcGUgcHJldmlvdXNseSBlc2NhcGVkIGVudGl0aWVzIHN1Y2ggYXMgYCZgLCBgPGAsIGA+YCwgYFwiYCxcbiAqIGFuZCBgJ2AuXG4gKiBAcGFyYW0ge3N0cmluZ30gdW4gYSBwcmV2aW91c2x5IGVzY2FwZWQgc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgdW5lc2NhcGVkIGlucHV0LCBhbmQgaXQgKip0aHJvd3MqKiBhbiBlcnJvciBpZlxuICogIHRoZSBpbnB1dCB0eXBlIGlzIHVuZXhwZWN0ZWQsIGV4Y2VwdCBmb3IgYm9vbGVhbiBhbmQgbnVtYmVycyxcbiAqICBjb252ZXJ0ZWQgYXMgc3RyaW5nLlxuICovXG5leHBvcnQgY29uc3QgdW5lc2NhcGUgPSB1biA9PiByZXBsYWNlLmNhbGwodW4sIGVzLCBjYXBlKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gbnVtT25seSh0YXJnZXQpIHtcbiAgcmV0dXJuIFN0cmluZyh0YXJnZXQpLnJlcGxhY2UoL1xcRC9nLCBcIlwiKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBudW1Pbmx5O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lhVzVrWlhndVkycHpJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOXpjbU12Ym5WdExXOXViSGt1ZEhNaVhTd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lablZ1WTNScGIyNGdiblZ0VDI1c2VTaDBZWEpuWlhRNklIVnVhMjV2ZDI0cE9pQnpkSEpwYm1jZ2UxeHVJQ0J5WlhSMWNtNGdVM1J5YVc1bktIUmhjbWRsZENrdWNtVndiR0ZqWlNndlhGeEVMMmNzSUNjbktUdGNibjFjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnYm5WdFQyNXNlVHRjYmlKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMRk5CUVZNc1VVRkJVU3hOUVVGQkxFVkJRWGxDTzBGQlEzaERMRVZCUVVFc1QwRkJUeXhOUVVGQkxFTkJRVThzVFVGQlRTeERRVUZCTEVOQlFVVXNUMEZCUVN4RFFVRlJMRTlCUVU4c1JVRkJSU3hEUVVGQk8wRkJRM3BET3pzN095SjlcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGlzTWVyZ2VhYmxlT2JqZWN0ID0gZnVuY3Rpb24gaXNNZXJnZWFibGVPYmplY3QodmFsdWUpIHtcblx0cmV0dXJuIGlzTm9uTnVsbE9iamVjdCh2YWx1ZSlcblx0XHQmJiAhaXNTcGVjaWFsKHZhbHVlKVxufTtcblxuZnVuY3Rpb24gaXNOb25OdWxsT2JqZWN0KHZhbHVlKSB7XG5cdHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbn1cblxuZnVuY3Rpb24gaXNTcGVjaWFsKHZhbHVlKSB7XG5cdHZhciBzdHJpbmdWYWx1ZSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG5cblx0cmV0dXJuIHN0cmluZ1ZhbHVlID09PSAnW29iamVjdCBSZWdFeHBdJ1xuXHRcdHx8IHN0cmluZ1ZhbHVlID09PSAnW29iamVjdCBEYXRlXSdcblx0XHR8fCBpc1JlYWN0RWxlbWVudCh2YWx1ZSlcbn1cblxuLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iL2I1YWM5NjNmYjc5MWQxMjk4ZTdmMzk2MjM2MzgzYmM5NTVmOTE2YzEvc3JjL2lzb21vcnBoaWMvY2xhc3NpYy9lbGVtZW50L1JlYWN0RWxlbWVudC5qcyNMMjEtTDI1XG52YXIgY2FuVXNlU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuZm9yO1xudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IGNhblVzZVN5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSA6IDB4ZWFjNztcblxuZnVuY3Rpb24gaXNSZWFjdEVsZW1lbnQodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEVcbn1cblxuZnVuY3Rpb24gZW1wdHlUYXJnZXQodmFsKSB7XG5cdHJldHVybiBBcnJheS5pc0FycmF5KHZhbCkgPyBbXSA6IHt9XG59XG5cbmZ1bmN0aW9uIGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkKHZhbHVlLCBvcHRpb25zKSB7XG5cdHJldHVybiAob3B0aW9ucy5jbG9uZSAhPT0gZmFsc2UgJiYgb3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdCh2YWx1ZSkpXG5cdFx0PyBkZWVwbWVyZ2UoZW1wdHlUYXJnZXQodmFsdWUpLCB2YWx1ZSwgb3B0aW9ucylcblx0XHQ6IHZhbHVlXG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRBcnJheU1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG5cdHJldHVybiB0YXJnZXQuY29uY2F0KHNvdXJjZSkubWFwKGZ1bmN0aW9uKGVsZW1lbnQpIHtcblx0XHRyZXR1cm4gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQoZWxlbWVudCwgb3B0aW9ucylcblx0fSlcbn1cblxuZnVuY3Rpb24gZ2V0TWVyZ2VGdW5jdGlvbihrZXksIG9wdGlvbnMpIHtcblx0aWYgKCFvcHRpb25zLmN1c3RvbU1lcmdlKSB7XG5cdFx0cmV0dXJuIGRlZXBtZXJnZVxuXHR9XG5cdHZhciBjdXN0b21NZXJnZSA9IG9wdGlvbnMuY3VzdG9tTWVyZ2Uoa2V5KTtcblx0cmV0dXJuIHR5cGVvZiBjdXN0b21NZXJnZSA9PT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbU1lcmdlIDogZGVlcG1lcmdlXG59XG5cbmZ1bmN0aW9uIGdldEVudW1lcmFibGVPd25Qcm9wZXJ0eVN5bWJvbHModGFyZ2V0KSB7XG5cdHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzXG5cdFx0PyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHRhcmdldCkuZmlsdGVyKGZ1bmN0aW9uKHN5bWJvbCkge1xuXHRcdFx0cmV0dXJuIE9iamVjdC5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHRhcmdldCwgc3ltYm9sKVxuXHRcdH0pXG5cdFx0OiBbXVxufVxuXG5mdW5jdGlvbiBnZXRLZXlzKHRhcmdldCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXModGFyZ2V0KS5jb25jYXQoZ2V0RW51bWVyYWJsZU93blByb3BlcnR5U3ltYm9scyh0YXJnZXQpKVxufVxuXG5mdW5jdGlvbiBwcm9wZXJ0eUlzT25PYmplY3Qob2JqZWN0LCBwcm9wZXJ0eSkge1xuXHR0cnkge1xuXHRcdHJldHVybiBwcm9wZXJ0eSBpbiBvYmplY3Rcblx0fSBjYXRjaChfKSB7XG5cdFx0cmV0dXJuIGZhbHNlXG5cdH1cbn1cblxuLy8gUHJvdGVjdHMgZnJvbSBwcm90b3R5cGUgcG9pc29uaW5nIGFuZCB1bmV4cGVjdGVkIG1lcmdpbmcgdXAgdGhlIHByb3RvdHlwZSBjaGFpbi5cbmZ1bmN0aW9uIHByb3BlcnR5SXNVbnNhZmUodGFyZ2V0LCBrZXkpIHtcblx0cmV0dXJuIHByb3BlcnR5SXNPbk9iamVjdCh0YXJnZXQsIGtleSkgLy8gUHJvcGVydGllcyBhcmUgc2FmZSB0byBtZXJnZSBpZiB0aGV5IGRvbid0IGV4aXN0IGluIHRoZSB0YXJnZXQgeWV0LFxuXHRcdCYmICEoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodGFyZ2V0LCBrZXkpIC8vIHVuc2FmZSBpZiB0aGV5IGV4aXN0IHVwIHRoZSBwcm90b3R5cGUgY2hhaW4sXG5cdFx0XHQmJiBPYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0YXJnZXQsIGtleSkpIC8vIGFuZCBhbHNvIHVuc2FmZSBpZiB0aGV5J3JlIG5vbmVudW1lcmFibGUuXG59XG5cbmZ1bmN0aW9uIG1lcmdlT2JqZWN0KHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG5cdHZhciBkZXN0aW5hdGlvbiA9IHt9O1xuXHRpZiAob3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdCh0YXJnZXQpKSB7XG5cdFx0Z2V0S2V5cyh0YXJnZXQpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG5cdFx0XHRkZXN0aW5hdGlvbltrZXldID0gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQodGFyZ2V0W2tleV0sIG9wdGlvbnMpO1xuXHRcdH0pO1xuXHR9XG5cdGdldEtleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuXHRcdGlmIChwcm9wZXJ0eUlzVW5zYWZlKHRhcmdldCwga2V5KSkge1xuXHRcdFx0cmV0dXJuXG5cdFx0fVxuXG5cdFx0aWYgKHByb3BlcnR5SXNPbk9iamVjdCh0YXJnZXQsIGtleSkgJiYgb3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdChzb3VyY2Vba2V5XSkpIHtcblx0XHRcdGRlc3RpbmF0aW9uW2tleV0gPSBnZXRNZXJnZUZ1bmN0aW9uKGtleSwgb3B0aW9ucykodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldLCBvcHRpb25zKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGVzdGluYXRpb25ba2V5XSA9IGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkKHNvdXJjZVtrZXldLCBvcHRpb25zKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gZGVzdGluYXRpb25cbn1cblxuZnVuY3Rpb24gZGVlcG1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG5cdG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXHRvcHRpb25zLmFycmF5TWVyZ2UgPSBvcHRpb25zLmFycmF5TWVyZ2UgfHwgZGVmYXVsdEFycmF5TWVyZ2U7XG5cdG9wdGlvbnMuaXNNZXJnZWFibGVPYmplY3QgPSBvcHRpb25zLmlzTWVyZ2VhYmxlT2JqZWN0IHx8IGlzTWVyZ2VhYmxlT2JqZWN0O1xuXHQvLyBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZCBpcyBhZGRlZCB0byBgb3B0aW9uc2Agc28gdGhhdCBjdXN0b20gYXJyYXlNZXJnZSgpXG5cdC8vIGltcGxlbWVudGF0aW9ucyBjYW4gdXNlIGl0LiBUaGUgY2FsbGVyIG1heSBub3QgcmVwbGFjZSBpdC5cblx0b3B0aW9ucy5jbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZCA9IGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkO1xuXG5cdHZhciBzb3VyY2VJc0FycmF5ID0gQXJyYXkuaXNBcnJheShzb3VyY2UpO1xuXHR2YXIgdGFyZ2V0SXNBcnJheSA9IEFycmF5LmlzQXJyYXkodGFyZ2V0KTtcblx0dmFyIHNvdXJjZUFuZFRhcmdldFR5cGVzTWF0Y2ggPSBzb3VyY2VJc0FycmF5ID09PSB0YXJnZXRJc0FycmF5O1xuXG5cdGlmICghc291cmNlQW5kVGFyZ2V0VHlwZXNNYXRjaCkge1xuXHRcdHJldHVybiBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZChzb3VyY2UsIG9wdGlvbnMpXG5cdH0gZWxzZSBpZiAoc291cmNlSXNBcnJheSkge1xuXHRcdHJldHVybiBvcHRpb25zLmFycmF5TWVyZ2UodGFyZ2V0LCBzb3VyY2UsIG9wdGlvbnMpXG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIG1lcmdlT2JqZWN0KHRhcmdldCwgc291cmNlLCBvcHRpb25zKVxuXHR9XG59XG5cbmRlZXBtZXJnZS5hbGwgPSBmdW5jdGlvbiBkZWVwbWVyZ2VBbGwoYXJyYXksIG9wdGlvbnMpIHtcblx0aWYgKCFBcnJheS5pc0FycmF5KGFycmF5KSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGFuIGFycmF5Jylcblx0fVxuXG5cdHJldHVybiBhcnJheS5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgbmV4dCkge1xuXHRcdHJldHVybiBkZWVwbWVyZ2UocHJldiwgbmV4dCwgb3B0aW9ucylcblx0fSwge30pXG59O1xuXG52YXIgZGVlcG1lcmdlXzEgPSBkZWVwbWVyZ2U7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVlcG1lcmdlXzE7XG4iLCJpbXBvcnQgbWVyZ2VEZWVwIGZyb20gJ2RlZXBtZXJnZSc7XG5cbnR5cGUgRGVlcFBhcnRpYWw8VD4gPSB7XG4gIFtQIGluIGtleW9mIFRdPzogRGVlcFBhcnRpYWw8VFtQXT47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdHVhbENwZkZvcm1hdHRpbmdPcHRpb25zPE9uRXJyRmFsbGJhY2s+IHtcbiAgZGVsaW1pdGVyczoge1xuICAgIGRhc2g6IHN0cmluZztcbiAgICBkb3Q6IHN0cmluZztcbiAgfTtcbiAgZXNjYXBlOiBib29sZWFuO1xuICBoaWRkZW46IGJvb2xlYW47XG4gIGhpZGRlbktleTogc3RyaW5nO1xuICBoaWRkZW5SYW5nZToge1xuICAgIGVuZDogbnVtYmVyO1xuICAgIHN0YXJ0OiBudW1iZXI7XG4gIH07XG4gIG9uRmFpbDogKHZhbHVlOiBzdHJpbmcsIGVycm9yOiBFcnJvcikgPT4gT25FcnJGYWxsYmFjaztcbn1cblxuZXhwb3J0IHR5cGUgQ3BmRm9ybWF0dGluZ09wdGlvbnM8T25FcnJGYWxsYmFjaz4gPSBEZWVwUGFydGlhbDxcbiAgQWN0dWFsQ3BmRm9ybWF0dGluZ09wdGlvbnM8T25FcnJGYWxsYmFjaz5cbj47XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBBY3R1YWxDcGZGb3JtYXR0aW5nT3B0aW9uczxzdHJpbmc+ID0ge1xuICBkZWxpbWl0ZXJzOiB7XG4gICAgZG90OiAnLicsXG4gICAgZGFzaDogJy0nLFxuICB9LFxuICBoaWRkZW5SYW5nZToge1xuICAgIHN0YXJ0OiAzLFxuICAgIGVuZDogMTAsXG4gIH0sXG4gIG9uRmFpbDogKHZhbHVlKSA9PiB2YWx1ZSxcbiAgaGlkZGVuS2V5OiAnKicsXG4gIGhpZGRlbjogZmFsc2UsXG4gIGVzY2FwZTogZmFsc2UsXG59O1xuXG4vKipcbiAqIE1lcmdlIGN1c3RvbSBvcHRpb25zIHRvIHRoZSBkZWZhdWx0IG9uZXMuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlT3B0aW9uczxPbkVyckZhbGxiYWNrPihcbiAgY3VzdG9tT3B0aW9uczogQ3BmRm9ybWF0dGluZ09wdGlvbnM8T25FcnJGYWxsYmFjaz4gPSB7fSxcbik6IEFjdHVhbENwZkZvcm1hdHRpbmdPcHRpb25zPE9uRXJyRmFsbGJhY2s+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IG1lcmdlRGVlcChcbiAgICBkZWZhdWx0T3B0aW9ucyxcbiAgICBjdXN0b21PcHRpb25zLFxuICApIGFzIEFjdHVhbENwZkZvcm1hdHRpbmdPcHRpb25zPE9uRXJyRmFsbGJhY2s+O1xuXG4gIGlmIChvcHRpb25zLmhpZGRlbikge1xuICAgIGlmIChcbiAgICAgIGlzTmFOKG9wdGlvbnMuaGlkZGVuUmFuZ2Uuc3RhcnQpIHx8XG4gICAgICBvcHRpb25zLmhpZGRlblJhbmdlLnN0YXJ0IDwgMCB8fFxuICAgICAgb3B0aW9ucy5oaWRkZW5SYW5nZS5zdGFydCA+IDEwXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdPcHRpb24gXCJoaWRkZW5SYW5nZS5zdGFydFwiIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxMC4nKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBpc05hTihvcHRpb25zLmhpZGRlblJhbmdlLmVuZCkgfHxcbiAgICAgIG9wdGlvbnMuaGlkZGVuUmFuZ2UuZW5kIDwgMCB8fFxuICAgICAgb3B0aW9ucy5oaWRkZW5SYW5nZS5lbmQgPiAxMFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT3B0aW9uIFwiaGlkZGVuUmFuZ2UuZW5kXCIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEwLicpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmhpZGRlblJhbmdlLnN0YXJ0ID4gb3B0aW9ucy5oaWRkZW5SYW5nZS5lbmQpIHtcbiAgICAgIGNvbnN0IGF1eCA9IG9wdGlvbnMuaGlkZGVuUmFuZ2Uuc3RhcnQ7XG4gICAgICBvcHRpb25zLmhpZGRlblJhbmdlLnN0YXJ0ID0gb3B0aW9ucy5oaWRkZW5SYW5nZS5lbmQ7XG4gICAgICBvcHRpb25zLmhpZGRlblJhbmdlLmVuZCA9IGF1eDtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIG9wdGlvbnMub25GYWlsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIG9wdGlvbiBcIm9uRmFpbFwiIG11c3QgYmUgYSBjYWxsYmFjayBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIHJldHVybiBvcHRpb25zO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZXJnZU9wdGlvbnM7XG4iLCJpbXBvcnQgeyBlc2NhcGUgYXMgZXNjYXBlSFRNTCB9IGZyb20gJ2h0bWwtZXNjYXBlcic7XG5pbXBvcnQgbnVtT25seSBmcm9tICdudW0tb25seSc7XG5cbmltcG9ydCBtZXJnZU9wdGlvbnMgZnJvbSAnLi9tZXJnZS1vcHRpb25zJztcbmltcG9ydCB0eXBlIHsgQ3BmRm9ybWF0dGluZ09wdGlvbnMgfSBmcm9tICcuL21lcmdlLW9wdGlvbnMnO1xuXG4vKipcbiAqIEZvcm1hdCBhIGdpdmVuIENQRiBjaGFyIHNlcXVlbmNlLlxuICovXG5mdW5jdGlvbiBjcGZGbXQ8T25FcnJGYWxsYmFjayA9IHN0cmluZz4oXG4gIGNwZlN0cmluZzogc3RyaW5nLFxuICBvcHRpb25zPzogQ3BmRm9ybWF0dGluZ09wdGlvbnM8T25FcnJGYWxsYmFjaz4sXG4pOiBzdHJpbmcge1xuICBjb25zdCBDUEZfTEVOR1RIID0gMTE7XG4gIGNvbnN0IGNwZkFycmF5ID0gbnVtT25seShjcGZTdHJpbmcpLnNwbGl0KCcnKTtcbiAgY29uc3QgY3VzdG9tT3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhvcHRpb25zKTtcblxuICBpZiAoY3BmQXJyYXkubGVuZ3RoICE9PSBDUEZfTEVOR1RIKSB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYFBhcmFtZXRlciBcIiR7Y3BmU3RyaW5nfVwiIGRvZXMgbm90IGNvbnRhaW4gJHtDUEZfTEVOR1RIfSBkaWdpdHMuYCk7XG5cbiAgICByZXR1cm4gY3VzdG9tT3B0aW9ucy5vbkZhaWwoY3BmU3RyaW5nLCBlcnJvcikgYXMgc3RyaW5nO1xuICB9XG5cbiAgaWYgKGN1c3RvbU9wdGlvbnMuaGlkZGVuKSB7XG4gICAgZm9yIChsZXQgaSA9IGN1c3RvbU9wdGlvbnMuaGlkZGVuUmFuZ2Uuc3RhcnQ7IGkgPD0gY3VzdG9tT3B0aW9ucy5oaWRkZW5SYW5nZS5lbmQ7IGkrKykge1xuICAgICAgY3BmQXJyYXlbaV0gPSBjdXN0b21PcHRpb25zLmhpZGRlbktleTtcbiAgICB9XG4gIH1cblxuICBjcGZBcnJheS5zcGxpY2UoOSwgMCwgY3VzdG9tT3B0aW9ucy5kZWxpbWl0ZXJzLmRhc2gpO1xuICBjcGZBcnJheS5zcGxpY2UoNiwgMCwgY3VzdG9tT3B0aW9ucy5kZWxpbWl0ZXJzLmRvdCk7XG4gIGNwZkFycmF5LnNwbGljZSgzLCAwLCBjdXN0b21PcHRpb25zLmRlbGltaXRlcnMuZG90KTtcbiAgY29uc3QgY3BmUHJldHR5ID0gY3BmQXJyYXkuam9pbignJyk7XG5cbiAgaWYgKGN1c3RvbU9wdGlvbnMuZXNjYXBlKSB7XG4gICAgcmV0dXJuIGVzY2FwZUhUTUwoY3BmUHJldHR5KTtcbiAgfVxuXG4gIHJldHVybiBjcGZQcmV0dHk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNwZkZtdDtcbiJdLCJuYW1lcyI6WyJyZXBsYWNlIiwiY2EiLCJlc2NhIiwicGUiLCJtIiwiZXNjYXBlIiwiZXMiLCJjYWxsIiwiaXNNZXJnZWFibGVPYmplY3QiLCJ2YWx1ZSIsImlzTm9uTnVsbE9iamVjdCIsImlzU3BlY2lhbCIsInN0cmluZ1ZhbHVlIiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJpc1JlYWN0RWxlbWVudCIsImNhblVzZVN5bWJvbCIsIlN5bWJvbCIsImZvciIsIlJFQUNUX0VMRU1FTlRfVFlQRSIsIiQkdHlwZW9mIiwiZW1wdHlUYXJnZXQiLCJ2YWwiLCJBcnJheSIsImlzQXJyYXkiLCJjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZCIsIm9wdGlvbnMiLCJjbG9uZSIsImRlZXBtZXJnZSIsImRlZmF1bHRBcnJheU1lcmdlIiwidGFyZ2V0Iiwic291cmNlIiwiY29uY2F0IiwibWFwIiwiZWxlbWVudCIsImdldE1lcmdlRnVuY3Rpb24iLCJrZXkiLCJjdXN0b21NZXJnZSIsImdldEVudW1lcmFibGVPd25Qcm9wZXJ0eVN5bWJvbHMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJzeW1ib2wiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImdldEtleXMiLCJrZXlzIiwicHJvcGVydHlJc09uT2JqZWN0Iiwib2JqZWN0IiwicHJvcGVydHkiLCJfIiwicHJvcGVydHlJc1Vuc2FmZSIsImhhc093blByb3BlcnR5IiwibWVyZ2VPYmplY3QiLCJkZXN0aW5hdGlvbiIsImZvckVhY2giLCJhcnJheU1lcmdlIiwic291cmNlSXNBcnJheSIsInRhcmdldElzQXJyYXkiLCJzb3VyY2VBbmRUYXJnZXRUeXBlc01hdGNoIiwiYWxsIiwiZGVlcG1lcmdlQWxsIiwiYXJyYXkiLCJFcnJvciIsInJlZHVjZSIsInByZXYiLCJuZXh0IiwiZGVlcG1lcmdlXzEiLCJjanMiLCJkZWZhdWx0T3B0aW9ucyIsImRlbGltaXRlcnMiLCJkb3QiLCJkYXNoIiwiaGlkZGVuUmFuZ2UiLCJzdGFydCIsImVuZCIsIm9uRmFpbCIsImhpZGRlbktleSIsImhpZGRlbiIsIm1lcmdlT3B0aW9ucyIsImN1c3RvbU9wdGlvbnMiLCJtZXJnZURlZXAiLCJpc05hTiIsIlR5cGVFcnJvciIsImF1eCIsImNwZkZtdCIsImNwZlN0cmluZyIsIkNQRl9MRU5HVEgiLCJjcGZBcnJheSIsIm51bU9ubHkiLCJzcGxpdCIsImxlbmd0aCIsImVycm9yIiwiaSIsInNwbGljZSIsImNwZlByZXR0eSIsImpvaW4iLCJlc2NhcGVIVE1MIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0VBQUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztFQUVBLE1BQU07RUFBQ0EsRUFBQUE7RUFBTyxDQUFDLEdBQUcsRUFBRTtFQUlwQixNQUFNQyxFQUFFLEdBQUcsVUFBVTtFQUVyQixNQUFNQyxJQUFJLEdBQUc7RUFDWCxFQUFBLEdBQUcsRUFBRSxPQUFPO0VBQ1osRUFBQSxHQUFHLEVBQUUsTUFBTTtFQUNYLEVBQUEsR0FBRyxFQUFFLE1BQU07RUFDWCxFQUFBLEdBQUcsRUFBRSxPQUFPO0VBQ1osRUFBQSxHQUFHLEVBQUU7RUFDUCxDQUFDO0VBQ0QsTUFBTUMsRUFBRSxHQUFHQyxDQUFDLElBQUlGLElBQUksQ0FBQ0UsQ0FBQyxDQUFDOztFQUV2QjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNPLE1BQU1DLE1BQU0sR0FBR0MsRUFBRSxJQUFJTixPQUFPLENBQUNPLElBQUksQ0FBQ0QsRUFBRSxFQUFFTCxFQUFFLEVBQUVFLEVBQUUsQ0FBQzs7Ozs7Ozs7Ozs7OztHQzFDcEQsU0FBUyxPQUFPLENBQUMsTUFBTSxFQUFFO0tBQ3ZCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FB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 |
| /** | ||
| * LacusSoft :: cpf-fmt v2.0.1 | ||
| * LacusSoft :: cpf-fmt v2.0.2 | ||
| * | ||
@@ -8,2 +8,2 @@ * @author Julio L. Muller. | ||
| !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).cpfFmt=n()}(this,(function(){"use strict";const{replace:e}="",n=/[&<>'"]/g,r={"&":"&","<":"<",">":">","'":"'",'"':"""},t=e=>r[e];function i(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var a,o;var c,d,u=i(o?a:(o=1,a=function(e){return String(e).replace(/\D/g,"")}));var f=i(function(){if(d)return c;d=1;var e=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var r=Object.prototype.toString.call(e);return"[object RegExp]"===r||"[object Date]"===r||function(e){return e.$$typeof===n}(e)}(e)},n="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function r(e,n){return!1!==n.clone&&n.isMergeableObject(e)?u((r=e,Array.isArray(r)?[]:{}),e,n):e;var r}function t(e,n,t){return e.concat(n).map((function(e){return r(e,t)}))}function i(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(n){return Object.propertyIsEnumerable.call(e,n)})):[]}(e))}function a(e,n){try{return n in e}catch(e){return!1}}function o(e,n,t){var o={};return t.isMergeableObject(e)&&i(e).forEach((function(n){o[n]=r(e[n],t)})),i(n).forEach((function(i){(function(e,n){return a(e,n)&&!(Object.hasOwnProperty.call(e,n)&&Object.propertyIsEnumerable.call(e,n))})(e,i)||(a(e,i)&&t.isMergeableObject(n[i])?o[i]=function(e,n){if(!n.customMerge)return u;var r=n.customMerge(e);return"function"==typeof r?r:u}(i,t)(e[i],n[i],t):o[i]=r(n[i],t))})),o}function u(n,i,a){(a=a||{}).arrayMerge=a.arrayMerge||t,a.isMergeableObject=a.isMergeableObject||e,a.cloneUnlessOtherwiseSpecified=r;var c=Array.isArray(i);return c===Array.isArray(n)?c?a.arrayMerge(n,i,a):o(n,i,a):r(i,a)}return u.all=function(e,n){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,r){return u(e,r,n)}),{})},c=u}()),s={delimiters:{dot:".",dash:"-"},hiddenRange:{start:3,end:10},onFail:function(e){return e},hiddenKey:"*",hidden:!1,escape:!1};return function(r,i){var a=u(r).split(""),o=function(e){void 0===e&&(e={});var n=f(s,e);if(n.hidden){if(isNaN(n.hiddenRange.start)||n.hiddenRange.start<0||n.hiddenRange.start>10)throw new TypeError('Option "hiddenRange.start" must be a number between 0 and 10.');if(isNaN(n.hiddenRange.end)||n.hiddenRange.end<0||n.hiddenRange.end>10)throw new TypeError('Option "hiddenRange.end" must be a number between 0 and 10.');if(n.hiddenRange.start>n.hiddenRange.end){var r=n.hiddenRange.start;n.hiddenRange.start=n.hiddenRange.end,n.hiddenRange.end=r}}if("function"!=typeof n.onFail)throw new TypeError('The option "onFail" must be a callback function.');return n}(i);if(11!==a.length){var c=new Error('Parameter "'.concat(r,'" does not contain ').concat(11," digits."));return o.onFail(r,c)}if(o.hidden)for(var d=o.hiddenRange.start;d<=o.hiddenRange.end;d++)a[d]=o.hiddenKey;a.splice(9,0,o.delimiters.dash),a.splice(6,0,o.delimiters.dot),a.splice(3,0,o.delimiters.dot);var l,p=a.join("");return o.escape?(l=p,e.call(l,n,t)):p}})); | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BmLWZtdC5taW4uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9odG1sLWVzY2FwZXIvZXNtL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL251bS1vbmx5L2J1aWxkL2luZGV4LmNqcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9kZWVwbWVyZ2UvZGlzdC9janMuanMiLCIuLi9zcmMvbWVyZ2Utb3B0aW9ucy50cyIsIi4uL3NyYy9jcGYtZm10LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChDKSAyMDE3LXByZXNlbnQgYnkgQW5kcmVhIEdpYW1tYXJjaGkgLSBAV2ViUmVmbGVjdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuY29uc3Qge3JlcGxhY2V9ID0gJyc7XG5cbi8vIGVzY2FwZVxuY29uc3QgZXMgPSAvJig/OmFtcHwjMzh8bHR8IzYwfGd0fCM2MnxhcG9zfCMzOXxxdW90fCMzNCk7L2c7XG5jb25zdCBjYSA9IC9bJjw+J1wiXS9nO1xuXG5jb25zdCBlc2NhID0ge1xuICAnJic6ICcmYW1wOycsXG4gICc8JzogJyZsdDsnLFxuICAnPic6ICcmZ3Q7JyxcbiAgXCInXCI6ICcmIzM5OycsXG4gICdcIic6ICcmcXVvdDsnXG59O1xuY29uc3QgcGUgPSBtID0+IGVzY2FbbV07XG5cbi8qKlxuICogU2FmZWx5IGVzY2FwZSBIVE1MIGVudGl0aWVzIHN1Y2ggYXMgYCZgLCBgPGAsIGA+YCwgYFwiYCwgYW5kIGAnYC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBlcyB0aGUgaW5wdXQgdG8gc2FmZWx5IGVzY2FwZVxuICogQHJldHVybnMge3N0cmluZ30gdGhlIGVzY2FwZWQgaW5wdXQsIGFuZCBpdCAqKnRocm93cyoqIGFuIGVycm9yIGlmXG4gKiAgdGhlIGlucHV0IHR5cGUgaXMgdW5leHBlY3RlZCwgZXhjZXB0IGZvciBib29sZWFuIGFuZCBudW1iZXJzLFxuICogIGNvbnZlcnRlZCBhcyBzdHJpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBlc2NhcGUgPSBlcyA9PiByZXBsYWNlLmNhbGwoZXMsIGNhLCBwZSk7XG5cblxuLy8gdW5lc2NhcGVcbmNvbnN0IHVuZXMgPSB7XG4gICcmYW1wOyc6ICcmJyxcbiAgJyYjMzg7JzogJyYnLFxuICAnJmx0Oyc6ICc8JyxcbiAgJyYjNjA7JzogJzwnLFxuICAnJmd0Oyc6ICc+JyxcbiAgJyYjNjI7JzogJz4nLFxuICAnJmFwb3M7JzogXCInXCIsXG4gICcmIzM5Oyc6IFwiJ1wiLFxuICAnJnF1b3Q7JzogJ1wiJyxcbiAgJyYjMzQ7JzogJ1wiJ1xufTtcbmNvbnN0IGNhcGUgPSBtID0+IHVuZXNbbV07XG5cbi8qKlxuICogU2FmZWx5IHVuZXNjYXBlIHByZXZpb3VzbHkgZXNjYXBlZCBlbnRpdGllcyBzdWNoIGFzIGAmYCwgYDxgLCBgPmAsIGBcImAsXG4gKiBhbmQgYCdgLlxuICogQHBhcmFtIHtzdHJpbmd9IHVuIGEgcHJldmlvdXNseSBlc2NhcGVkIHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gdGhlIHVuZXNjYXBlZCBpbnB1dCwgYW5kIGl0ICoqdGhyb3dzKiogYW4gZXJyb3IgaWZcbiAqICB0aGUgaW5wdXQgdHlwZSBpcyB1bmV4cGVjdGVkLCBleGNlcHQgZm9yIGJvb2xlYW4gYW5kIG51bWJlcnMsXG4gKiAgY29udmVydGVkIGFzIHN0cmluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IHVuZXNjYXBlID0gdW4gPT4gcmVwbGFjZS5jYWxsKHVuLCBlcywgY2FwZSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIG51bU9ubHkodGFyZ2V0KSB7XG4gIHJldHVybiBTdHJpbmcodGFyZ2V0KS5yZXBsYWNlKC9cXEQvZywgXCJcIik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbnVtT25seTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYVc1a1pYZ3VZMnB6SWl3aWMyOTFjbU5sY3lJNld5SXVMaTl6Y21NdmJuVnRMVzl1YkhrdWRITWlYU3dpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpWm5WdVkzUnBiMjRnYm5WdFQyNXNlU2gwWVhKblpYUTZJSFZ1YTI1dmQyNHBPaUJ6ZEhKcGJtY2dlMXh1SUNCeVpYUjFjbTRnVTNSeWFXNW5LSFJoY21kbGRDa3VjbVZ3YkdGalpTZ3ZYRnhFTDJjc0lDY25LVHRjYm4xY2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ2JuVnRUMjVzZVR0Y2JpSmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVUZCTEZOQlFWTXNVVUZCVVN4TlFVRjVRaXhGUVVGQk8wRkJRM2hETEVWQlFVRXNUMEZCVHl4TlFVRlBMRU5CUVVFc1RVRkJUU3hEUVVGRkxFTkJRVUVzVDBGQlFTeERRVUZSTEU5QlFVOHNSVUZCUlN4RFFVRkJPMEZCUTNwRE96czdPeUo5XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpc01lcmdlYWJsZU9iamVjdCA9IGZ1bmN0aW9uIGlzTWVyZ2VhYmxlT2JqZWN0KHZhbHVlKSB7XG5cdHJldHVybiBpc05vbk51bGxPYmplY3QodmFsdWUpXG5cdFx0JiYgIWlzU3BlY2lhbCh2YWx1ZSlcbn07XG5cbmZ1bmN0aW9uIGlzTm9uTnVsbE9iamVjdCh2YWx1ZSkge1xuXHRyZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnXG59XG5cbmZ1bmN0aW9uIGlzU3BlY2lhbCh2YWx1ZSkge1xuXHR2YXIgc3RyaW5nVmFsdWUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuXG5cdHJldHVybiBzdHJpbmdWYWx1ZSA9PT0gJ1tvYmplY3QgUmVnRXhwXSdcblx0XHR8fCBzdHJpbmdWYWx1ZSA9PT0gJ1tvYmplY3QgRGF0ZV0nXG5cdFx0fHwgaXNSZWFjdEVsZW1lbnQodmFsdWUpXG59XG5cbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi9iNWFjOTYzZmI3OTFkMTI5OGU3ZjM5NjIzNjM4M2JjOTU1ZjkxNmMxL3NyYy9pc29tb3JwaGljL2NsYXNzaWMvZWxlbWVudC9SZWFjdEVsZW1lbnQuanMjTDIxLUwyNVxudmFyIGNhblVzZVN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmZvcjtcbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBjYW5Vc2VTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykgOiAweGVhYzc7XG5cbmZ1bmN0aW9uIGlzUmVhY3RFbGVtZW50KHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFXG59XG5cbmZ1bmN0aW9uIGVtcHR5VGFyZ2V0KHZhbCkge1xuXHRyZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpID8gW10gOiB7fVxufVxuXG5mdW5jdGlvbiBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZCh2YWx1ZSwgb3B0aW9ucykge1xuXHRyZXR1cm4gKG9wdGlvbnMuY2xvbmUgIT09IGZhbHNlICYmIG9wdGlvbnMuaXNNZXJnZWFibGVPYmplY3QodmFsdWUpKVxuXHRcdD8gZGVlcG1lcmdlKGVtcHR5VGFyZ2V0KHZhbHVlKSwgdmFsdWUsIG9wdGlvbnMpXG5cdFx0OiB2YWx1ZVxufVxuXG5mdW5jdGlvbiBkZWZhdWx0QXJyYXlNZXJnZSh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucykge1xuXHRyZXR1cm4gdGFyZ2V0LmNvbmNhdChzb3VyY2UpLm1hcChmdW5jdGlvbihlbGVtZW50KSB7XG5cdFx0cmV0dXJuIGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkKGVsZW1lbnQsIG9wdGlvbnMpXG5cdH0pXG59XG5cbmZ1bmN0aW9uIGdldE1lcmdlRnVuY3Rpb24oa2V5LCBvcHRpb25zKSB7XG5cdGlmICghb3B0aW9ucy5jdXN0b21NZXJnZSkge1xuXHRcdHJldHVybiBkZWVwbWVyZ2Vcblx0fVxuXHR2YXIgY3VzdG9tTWVyZ2UgPSBvcHRpb25zLmN1c3RvbU1lcmdlKGtleSk7XG5cdHJldHVybiB0eXBlb2YgY3VzdG9tTWVyZ2UgPT09ICdmdW5jdGlvbicgPyBjdXN0b21NZXJnZSA6IGRlZXBtZXJnZVxufVxuXG5mdW5jdGlvbiBnZXRFbnVtZXJhYmxlT3duUHJvcGVydHlTeW1ib2xzKHRhcmdldCkge1xuXHRyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc1xuXHRcdD8gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0YXJnZXQpLmZpbHRlcihmdW5jdGlvbihzeW1ib2wpIHtcblx0XHRcdHJldHVybiBPYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0YXJnZXQsIHN5bWJvbClcblx0XHR9KVxuXHRcdDogW11cbn1cblxuZnVuY3Rpb24gZ2V0S2V5cyh0YXJnZXQpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKHRhcmdldCkuY29uY2F0KGdldEVudW1lcmFibGVPd25Qcm9wZXJ0eVN5bWJvbHModGFyZ2V0KSlcbn1cblxuZnVuY3Rpb24gcHJvcGVydHlJc09uT2JqZWN0KG9iamVjdCwgcHJvcGVydHkpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gcHJvcGVydHkgaW4gb2JqZWN0XG5cdH0gY2F0Y2goXykge1xuXHRcdHJldHVybiBmYWxzZVxuXHR9XG59XG5cbi8vIFByb3RlY3RzIGZyb20gcHJvdG90eXBlIHBvaXNvbmluZyBhbmQgdW5leHBlY3RlZCBtZXJnaW5nIHVwIHRoZSBwcm90b3R5cGUgY2hhaW4uXG5mdW5jdGlvbiBwcm9wZXJ0eUlzVW5zYWZlKHRhcmdldCwga2V5KSB7XG5cdHJldHVybiBwcm9wZXJ0eUlzT25PYmplY3QodGFyZ2V0LCBrZXkpIC8vIFByb3BlcnRpZXMgYXJlIHNhZmUgdG8gbWVyZ2UgaWYgdGhleSBkb24ndCBleGlzdCBpbiB0aGUgdGFyZ2V0IHlldCxcblx0XHQmJiAhKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRhcmdldCwga2V5KSAvLyB1bnNhZmUgaWYgdGhleSBleGlzdCB1cCB0aGUgcHJvdG90eXBlIGNoYWluLFxuXHRcdFx0JiYgT2JqZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodGFyZ2V0LCBrZXkpKSAvLyBhbmQgYWxzbyB1bnNhZmUgaWYgdGhleSdyZSBub25lbnVtZXJhYmxlLlxufVxuXG5mdW5jdGlvbiBtZXJnZU9iamVjdCh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucykge1xuXHR2YXIgZGVzdGluYXRpb24gPSB7fTtcblx0aWYgKG9wdGlvbnMuaXNNZXJnZWFibGVPYmplY3QodGFyZ2V0KSkge1xuXHRcdGdldEtleXModGFyZ2V0KS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuXHRcdFx0ZGVzdGluYXRpb25ba2V5XSA9IGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkKHRhcmdldFtrZXldLCBvcHRpb25zKTtcblx0XHR9KTtcblx0fVxuXHRnZXRLZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcblx0XHRpZiAocHJvcGVydHlJc1Vuc2FmZSh0YXJnZXQsIGtleSkpIHtcblx0XHRcdHJldHVyblxuXHRcdH1cblxuXHRcdGlmIChwcm9wZXJ0eUlzT25PYmplY3QodGFyZ2V0LCBrZXkpICYmIG9wdGlvbnMuaXNNZXJnZWFibGVPYmplY3Qoc291cmNlW2tleV0pKSB7XG5cdFx0XHRkZXN0aW5hdGlvbltrZXldID0gZ2V0TWVyZ2VGdW5jdGlvbihrZXksIG9wdGlvbnMpKHRhcmdldFtrZXldLCBzb3VyY2Vba2V5XSwgb3B0aW9ucyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRlc3RpbmF0aW9uW2tleV0gPSBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZChzb3VyY2Vba2V5XSwgb3B0aW9ucyk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIGRlc3RpbmF0aW9uXG59XG5cbmZ1bmN0aW9uIGRlZXBtZXJnZSh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucykge1xuXHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblx0b3B0aW9ucy5hcnJheU1lcmdlID0gb3B0aW9ucy5hcnJheU1lcmdlIHx8IGRlZmF1bHRBcnJheU1lcmdlO1xuXHRvcHRpb25zLmlzTWVyZ2VhYmxlT2JqZWN0ID0gb3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdCB8fCBpc01lcmdlYWJsZU9iamVjdDtcblx0Ly8gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQgaXMgYWRkZWQgdG8gYG9wdGlvbnNgIHNvIHRoYXQgY3VzdG9tIGFycmF5TWVyZ2UoKVxuXHQvLyBpbXBsZW1lbnRhdGlvbnMgY2FuIHVzZSBpdC4gVGhlIGNhbGxlciBtYXkgbm90IHJlcGxhY2UgaXQuXG5cdG9wdGlvbnMuY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQgPSBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZDtcblxuXHR2YXIgc291cmNlSXNBcnJheSA9IEFycmF5LmlzQXJyYXkoc291cmNlKTtcblx0dmFyIHRhcmdldElzQXJyYXkgPSBBcnJheS5pc0FycmF5KHRhcmdldCk7XG5cdHZhciBzb3VyY2VBbmRUYXJnZXRUeXBlc01hdGNoID0gc291cmNlSXNBcnJheSA9PT0gdGFyZ2V0SXNBcnJheTtcblxuXHRpZiAoIXNvdXJjZUFuZFRhcmdldFR5cGVzTWF0Y2gpIHtcblx0XHRyZXR1cm4gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQoc291cmNlLCBvcHRpb25zKVxuXHR9IGVsc2UgaWYgKHNvdXJjZUlzQXJyYXkpIHtcblx0XHRyZXR1cm4gb3B0aW9ucy5hcnJheU1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKVxuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBtZXJnZU9iamVjdCh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucylcblx0fVxufVxuXG5kZWVwbWVyZ2UuYWxsID0gZnVuY3Rpb24gZGVlcG1lcmdlQWxsKGFycmF5LCBvcHRpb25zKSB7XG5cdGlmICghQXJyYXkuaXNBcnJheShhcnJheSkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2ZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhbiBhcnJheScpXG5cdH1cblxuXHRyZXR1cm4gYXJyYXkucmVkdWNlKGZ1bmN0aW9uKHByZXYsIG5leHQpIHtcblx0XHRyZXR1cm4gZGVlcG1lcmdlKHByZXYsIG5leHQsIG9wdGlvbnMpXG5cdH0sIHt9KVxufTtcblxudmFyIGRlZXBtZXJnZV8xID0gZGVlcG1lcmdlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZXBtZXJnZV8xO1xuIiwiaW1wb3J0IG1lcmdlRGVlcCBmcm9tICdkZWVwbWVyZ2UnO1xuXG50eXBlIERlZXBQYXJ0aWFsPFQ+ID0ge1xuICBbUCBpbiBrZXlvZiBUXT86IERlZXBQYXJ0aWFsPFRbUF0+O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBBY3R1YWxDcGZGb3JtYXR0aW5nT3B0aW9uczxPbkVyckZhbGxiYWNrPiB7XG4gIGRlbGltaXRlcnM6IHtcbiAgICBkYXNoOiBzdHJpbmc7XG4gICAgZG90OiBzdHJpbmc7XG4gIH07XG4gIGVzY2FwZTogYm9vbGVhbjtcbiAgaGlkZGVuOiBib29sZWFuO1xuICBoaWRkZW5LZXk6IHN0cmluZztcbiAgaGlkZGVuUmFuZ2U6IHtcbiAgICBlbmQ6IG51bWJlcjtcbiAgICBzdGFydDogbnVtYmVyO1xuICB9O1xuICBvbkZhaWw6ICh2YWx1ZTogc3RyaW5nLCBlcnJvcjogRXJyb3IpID0+IE9uRXJyRmFsbGJhY2s7XG59XG5cbmV4cG9ydCB0eXBlIENwZkZvcm1hdHRpbmdPcHRpb25zPE9uRXJyRmFsbGJhY2s+ID0gRGVlcFBhcnRpYWw8XG4gIEFjdHVhbENwZkZvcm1hdHRpbmdPcHRpb25zPE9uRXJyRmFsbGJhY2s+XG4+O1xuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogQWN0dWFsQ3BmRm9ybWF0dGluZ09wdGlvbnM8c3RyaW5nPiA9IHtcbiAgZGVsaW1pdGVyczoge1xuICAgIGRvdDogJy4nLFxuICAgIGRhc2g6ICctJyxcbiAgfSxcbiAgaGlkZGVuUmFuZ2U6IHtcbiAgICBzdGFydDogMyxcbiAgICBlbmQ6IDEwLFxuICB9LFxuICBvbkZhaWw6ICh2YWx1ZSkgPT4gdmFsdWUsXG4gIGhpZGRlbktleTogJyonLFxuICBoaWRkZW46IGZhbHNlLFxuICBlc2NhcGU6IGZhbHNlLFxufTtcblxuLyoqXG4gKiBNZXJnZSBjdXN0b20gb3B0aW9ucyB0byB0aGUgZGVmYXVsdCBvbmVzLlxuICovXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnM8T25FcnJGYWxsYmFjaz4oXG4gIGN1c3RvbU9wdGlvbnM6IENwZkZvcm1hdHRpbmdPcHRpb25zPE9uRXJyRmFsbGJhY2s+ID0ge30sXG4pOiBBY3R1YWxDcGZGb3JtYXR0aW5nT3B0aW9uczxPbkVyckZhbGxiYWNrPiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBtZXJnZURlZXAoXG4gICAgZGVmYXVsdE9wdGlvbnMsXG4gICAgY3VzdG9tT3B0aW9ucyxcbiAgKSBhcyBBY3R1YWxDcGZGb3JtYXR0aW5nT3B0aW9uczxPbkVyckZhbGxiYWNrPjtcblxuICBpZiAob3B0aW9ucy5oaWRkZW4pIHtcbiAgICBpZiAoXG4gICAgICBpc05hTihvcHRpb25zLmhpZGRlblJhbmdlLnN0YXJ0KSB8fFxuICAgICAgb3B0aW9ucy5oaWRkZW5SYW5nZS5zdGFydCA8IDAgfHxcbiAgICAgIG9wdGlvbnMuaGlkZGVuUmFuZ2Uuc3RhcnQgPiAxMFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT3B0aW9uIFwiaGlkZGVuUmFuZ2Uuc3RhcnRcIiBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMTAuJyk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgaXNOYU4ob3B0aW9ucy5oaWRkZW5SYW5nZS5lbmQpIHx8XG4gICAgICBvcHRpb25zLmhpZGRlblJhbmdlLmVuZCA8IDAgfHxcbiAgICAgIG9wdGlvbnMuaGlkZGVuUmFuZ2UuZW5kID4gMTBcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ09wdGlvbiBcImhpZGRlblJhbmdlLmVuZFwiIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxMC4nKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5oaWRkZW5SYW5nZS5zdGFydCA+IG9wdGlvbnMuaGlkZGVuUmFuZ2UuZW5kKSB7XG4gICAgICBjb25zdCBhdXggPSBvcHRpb25zLmhpZGRlblJhbmdlLnN0YXJ0O1xuICAgICAgb3B0aW9ucy5oaWRkZW5SYW5nZS5zdGFydCA9IG9wdGlvbnMuaGlkZGVuUmFuZ2UuZW5kO1xuICAgICAgb3B0aW9ucy5oaWRkZW5SYW5nZS5lbmQgPSBhdXg7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLm9uRmFpbCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBvcHRpb24gXCJvbkZhaWxcIiBtdXN0IGJlIGEgY2FsbGJhY2sgZnVuY3Rpb24uJyk7XG4gIH1cblxuICByZXR1cm4gb3B0aW9ucztcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWVyZ2VPcHRpb25zO1xuIiwiaW1wb3J0IHsgZXNjYXBlIGFzIGVzY2FwZUhUTUwgfSBmcm9tICdodG1sLWVzY2FwZXInO1xuaW1wb3J0IG51bU9ubHkgZnJvbSAnbnVtLW9ubHknO1xuXG5pbXBvcnQgbWVyZ2VPcHRpb25zIGZyb20gJy4vbWVyZ2Utb3B0aW9ucyc7XG5pbXBvcnQgdHlwZSB7IENwZkZvcm1hdHRpbmdPcHRpb25zIH0gZnJvbSAnLi9tZXJnZS1vcHRpb25zJztcblxuLyoqXG4gKiBGb3JtYXQgYSBnaXZlbiBDUEYgY2hhciBzZXF1ZW5jZS5cbiAqL1xuZnVuY3Rpb24gY3BmRm10PE9uRXJyRmFsbGJhY2sgPSBzdHJpbmc+KFxuICBjcGZTdHJpbmc6IHN0cmluZyxcbiAgb3B0aW9ucz86IENwZkZvcm1hdHRpbmdPcHRpb25zPE9uRXJyRmFsbGJhY2s+LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgQ1BGX0xFTkdUSCA9IDExO1xuICBjb25zdCBjcGZBcnJheSA9IG51bU9ubHkoY3BmU3RyaW5nKS5zcGxpdCgnJyk7XG4gIGNvbnN0IGN1c3RvbU9wdGlvbnMgPSBtZXJnZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgaWYgKGNwZkFycmF5Lmxlbmd0aCAhPT0gQ1BGX0xFTkdUSCkge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBQYXJhbWV0ZXIgXCIke2NwZlN0cmluZ31cIiBkb2VzIG5vdCBjb250YWluICR7Q1BGX0xFTkdUSH0gZGlnaXRzLmApO1xuXG4gICAgcmV0dXJuIGN1c3RvbU9wdGlvbnMub25GYWlsKGNwZlN0cmluZywgZXJyb3IpIGFzIHN0cmluZztcbiAgfVxuXG4gIGlmIChjdXN0b21PcHRpb25zLmhpZGRlbikge1xuICAgIGZvciAobGV0IGkgPSBjdXN0b21PcHRpb25zLmhpZGRlblJhbmdlLnN0YXJ0OyBpIDw9IGN1c3RvbU9wdGlvbnMuaGlkZGVuUmFuZ2UuZW5kOyBpKyspIHtcbiAgICAgIGNwZkFycmF5W2ldID0gY3VzdG9tT3B0aW9ucy5oaWRkZW5LZXk7XG4gICAgfVxuICB9XG5cbiAgY3BmQXJyYXkuc3BsaWNlKDksIDAsIGN1c3RvbU9wdGlvbnMuZGVsaW1pdGVycy5kYXNoKTtcbiAgY3BmQXJyYXkuc3BsaWNlKDYsIDAsIGN1c3RvbU9wdGlvbnMuZGVsaW1pdGVycy5kb3QpO1xuICBjcGZBcnJheS5zcGxpY2UoMywgMCwgY3VzdG9tT3B0aW9ucy5kZWxpbWl0ZXJzLmRvdCk7XG4gIGNvbnN0IGNwZlByZXR0eSA9IGNwZkFycmF5LmpvaW4oJycpO1xuXG4gIGlmIChjdXN0b21PcHRpb25zLmVzY2FwZSkge1xuICAgIHJldHVybiBlc2NhcGVIVE1MKGNwZlByZXR0eSk7XG4gIH1cblxuICByZXR1cm4gY3BmUHJldHR5O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcGZGbXQ7XG4iXSwibmFtZXMiOlsicmVwbGFjZSIsImNhIiwiZXNjYSIsInBlIiwibSIsImJ1aWxkIiwidGFyZ2V0IiwiU3RyaW5nIiwiaXNNZXJnZWFibGVPYmplY3QiLCJ2YWx1ZSIsImlzTm9uTnVsbE9iamVjdCIsInN0cmluZ1ZhbHVlIiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiJCR0eXBlb2YiLCJSRUFDVF9FTEVNRU5UX1RZUEUiLCJpc1JlYWN0RWxlbWVudCIsImlzU3BlY2lhbCIsIlN5bWJvbCIsImZvciIsImNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkIiwib3B0aW9ucyIsImNsb25lIiwiZGVlcG1lcmdlIiwidmFsIiwiQXJyYXkiLCJpc0FycmF5IiwiZGVmYXVsdEFycmF5TWVyZ2UiLCJzb3VyY2UiLCJjb25jYXQiLCJtYXAiLCJlbGVtZW50IiwiZ2V0S2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJzeW1ib2wiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImdldEVudW1lcmFibGVPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wZXJ0eUlzT25PYmplY3QiLCJvYmplY3QiLCJwcm9wZXJ0eSIsIl8iLCJtZXJnZU9iamVjdCIsImRlc3RpbmF0aW9uIiwiZm9yRWFjaCIsImtleSIsImhhc093blByb3BlcnR5IiwicHJvcGVydHlJc1Vuc2FmZSIsImN1c3RvbU1lcmdlIiwiZ2V0TWVyZ2VGdW5jdGlvbiIsImFycmF5TWVyZ2UiLCJzb3VyY2VJc0FycmF5IiwiYWxsIiwiYXJyYXkiLCJFcnJvciIsInJlZHVjZSIsInByZXYiLCJuZXh0IiwiY2pzIiwiZGVmYXVsdE9wdGlvbnMiLCJkZWxpbWl0ZXJzIiwiZG90IiwiZGFzaCIsImhpZGRlblJhbmdlIiwic3RhcnQiLCJlbmQiLCJvbkZhaWwiLCJoaWRkZW5LZXkiLCJoaWRkZW4iLCJlc2NhcGUiLCJjcGZTdHJpbmciLCJjcGZBcnJheSIsIm51bU9ubHkiLCJzcGxpdCIsImN1c3RvbU9wdGlvbnMiLCJtZXJnZURlZXAiLCJpc05hTiIsIlR5cGVFcnJvciIsImF1eCIsIm1lcmdlT3B0aW9ucyIsImxlbmd0aCIsImVycm9yIiwiaSIsInNwbGljZSIsImVzIiwiY3BmUHJldHR5Iiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O3VPQXNCQSxNQUFNQSxRQUFDQSxHQUFXLEdBSVpDLEVBQUssV0FFTEMsRUFBTyxDQUNYLElBQUssUUFDTCxJQUFLLE9BQ0wsSUFBSyxPQUNMLElBQUssUUFDTCxJQUFLLFVBRURDLEVBQUtDLEdBQUtGLEVBQUtFLG9JQzdCckJDLEVBSkEsU0FBaUJDLEdBQ2YsT0FBT0MsT0FBT0QsR0FBUU4sUUFBUSxNQUFPLEdBQ3ZDLHlDQ0ZBLElBQUlRLEVBQW9CLFNBQTJCQyxHQUNsRCxPQUlELFNBQXlCQSxHQUN4QixRQUFTQSxHQUEwQixpQkFBVkEsQ0FDMUIsQ0FOUUMsQ0FBZ0JELEtBUXhCLFNBQW1CQSxHQUNsQixJQUFJRSxFQUFjQyxPQUFPQyxVQUFVQyxTQUFTQyxLQUFLTixHQUVqRCxNQUF1QixvQkFBaEJFLEdBQ2Esa0JBQWhCQSxHQVFMLFNBQXdCRixHQUN2QixPQUFPQSxFQUFNTyxXQUFhQyxDQUMzQixDQVRLQyxDQUFlVCxFQUNwQixDQWJNVSxDQUFVVixFQUNoQixFQWdCSVEsRUFEaUMsbUJBQVhHLFFBQXlCQSxPQUFPQyxJQUNsQkQsT0FBT0MsSUFBSSxpQkFBbUIsTUFVdEUsU0FBU0MsRUFBOEJiLEVBQU9jLEdBQzdDLE9BQTBCLElBQWxCQSxFQUFRQyxPQUFtQkQsRUFBUWYsa0JBQWtCQyxHQUMxRGdCLEdBTmlCQyxFQU1LakIsRUFMbEJrQixNQUFNQyxRQUFRRixHQUFPLEdBQUssQ0FBQSxHQUtBakIsRUFBT2MsR0FDckNkLEVBUEosSUFBcUJpQixDQVFyQixDQUVBLFNBQVNHLEVBQWtCdkIsRUFBUXdCLEVBQVFQLEdBQzFDLE9BQU9q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 | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BmLWZtdC5taW4uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9odG1sLWVzY2FwZXIvZXNtL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL251bS1vbmx5L2J1aWxkL2luZGV4LmNqcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9kZWVwbWVyZ2UvZGlzdC9janMuanMiLCIuLi9zcmMvbWVyZ2Utb3B0aW9ucy50cyIsIi4uL3NyYy9jcGYtZm10LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChDKSAyMDE3LXByZXNlbnQgYnkgQW5kcmVhIEdpYW1tYXJjaGkgLSBAV2ViUmVmbGVjdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuY29uc3Qge3JlcGxhY2V9ID0gJyc7XG5cbi8vIGVzY2FwZVxuY29uc3QgZXMgPSAvJig/OmFtcHwjMzh8bHR8IzYwfGd0fCM2MnxhcG9zfCMzOXxxdW90fCMzNCk7L2c7XG5jb25zdCBjYSA9IC9bJjw+J1wiXS9nO1xuXG5jb25zdCBlc2NhID0ge1xuICAnJic6ICcmYW1wOycsXG4gICc8JzogJyZsdDsnLFxuICAnPic6ICcmZ3Q7JyxcbiAgXCInXCI6ICcmIzM5OycsXG4gICdcIic6ICcmcXVvdDsnXG59O1xuY29uc3QgcGUgPSBtID0+IGVzY2FbbV07XG5cbi8qKlxuICogU2FmZWx5IGVzY2FwZSBIVE1MIGVudGl0aWVzIHN1Y2ggYXMgYCZgLCBgPGAsIGA+YCwgYFwiYCwgYW5kIGAnYC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBlcyB0aGUgaW5wdXQgdG8gc2FmZWx5IGVzY2FwZVxuICogQHJldHVybnMge3N0cmluZ30gdGhlIGVzY2FwZWQgaW5wdXQsIGFuZCBpdCAqKnRocm93cyoqIGFuIGVycm9yIGlmXG4gKiAgdGhlIGlucHV0IHR5cGUgaXMgdW5leHBlY3RlZCwgZXhjZXB0IGZvciBib29sZWFuIGFuZCBudW1iZXJzLFxuICogIGNvbnZlcnRlZCBhcyBzdHJpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBlc2NhcGUgPSBlcyA9PiByZXBsYWNlLmNhbGwoZXMsIGNhLCBwZSk7XG5cblxuLy8gdW5lc2NhcGVcbmNvbnN0IHVuZXMgPSB7XG4gICcmYW1wOyc6ICcmJyxcbiAgJyYjMzg7JzogJyYnLFxuICAnJmx0Oyc6ICc8JyxcbiAgJyYjNjA7JzogJzwnLFxuICAnJmd0Oyc6ICc+JyxcbiAgJyYjNjI7JzogJz4nLFxuICAnJmFwb3M7JzogXCInXCIsXG4gICcmIzM5Oyc6IFwiJ1wiLFxuICAnJnF1b3Q7JzogJ1wiJyxcbiAgJyYjMzQ7JzogJ1wiJ1xufTtcbmNvbnN0IGNhcGUgPSBtID0+IHVuZXNbbV07XG5cbi8qKlxuICogU2FmZWx5IHVuZXNjYXBlIHByZXZpb3VzbHkgZXNjYXBlZCBlbnRpdGllcyBzdWNoIGFzIGAmYCwgYDxgLCBgPmAsIGBcImAsXG4gKiBhbmQgYCdgLlxuICogQHBhcmFtIHtzdHJpbmd9IHVuIGEgcHJldmlvdXNseSBlc2NhcGVkIHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gdGhlIHVuZXNjYXBlZCBpbnB1dCwgYW5kIGl0ICoqdGhyb3dzKiogYW4gZXJyb3IgaWZcbiAqICB0aGUgaW5wdXQgdHlwZSBpcyB1bmV4cGVjdGVkLCBleGNlcHQgZm9yIGJvb2xlYW4gYW5kIG51bWJlcnMsXG4gKiAgY29udmVydGVkIGFzIHN0cmluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IHVuZXNjYXBlID0gdW4gPT4gcmVwbGFjZS5jYWxsKHVuLCBlcywgY2FwZSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIG51bU9ubHkodGFyZ2V0KSB7XG4gIHJldHVybiBTdHJpbmcodGFyZ2V0KS5yZXBsYWNlKC9cXEQvZywgXCJcIik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbnVtT25seTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYVc1a1pYZ3VZMnB6SWl3aWMyOTFjbU5sY3lJNld5SXVMaTl6Y21NdmJuVnRMVzl1YkhrdWRITWlYU3dpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpWm5WdVkzUnBiMjRnYm5WdFQyNXNlU2gwWVhKblpYUTZJSFZ1YTI1dmQyNHBPaUJ6ZEhKcGJtY2dlMXh1SUNCeVpYUjFjbTRnVTNSeWFXNW5LSFJoY21kbGRDa3VjbVZ3YkdGalpTZ3ZYRnhFTDJjc0lDY25LVHRjYm4xY2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ2JuVnRUMjVzZVR0Y2JpSmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVUZCTEZOQlFWTXNVVUZCVVN4TlFVRkJMRVZCUVhsQ08wRkJRM2hETEVWQlFVRXNUMEZCVHl4TlFVRkJMRU5CUVU4c1RVRkJUU3hEUVVGQkxFTkJRVVVzVDBGQlFTeERRVUZSTEU5QlFVOHNSVUZCUlN4RFFVRkJPMEZCUTNwRE96czdPeUo5XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpc01lcmdlYWJsZU9iamVjdCA9IGZ1bmN0aW9uIGlzTWVyZ2VhYmxlT2JqZWN0KHZhbHVlKSB7XG5cdHJldHVybiBpc05vbk51bGxPYmplY3QodmFsdWUpXG5cdFx0JiYgIWlzU3BlY2lhbCh2YWx1ZSlcbn07XG5cbmZ1bmN0aW9uIGlzTm9uTnVsbE9iamVjdCh2YWx1ZSkge1xuXHRyZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnXG59XG5cbmZ1bmN0aW9uIGlzU3BlY2lhbCh2YWx1ZSkge1xuXHR2YXIgc3RyaW5nVmFsdWUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuXG5cdHJldHVybiBzdHJpbmdWYWx1ZSA9PT0gJ1tvYmplY3QgUmVnRXhwXSdcblx0XHR8fCBzdHJpbmdWYWx1ZSA9PT0gJ1tvYmplY3QgRGF0ZV0nXG5cdFx0fHwgaXNSZWFjdEVsZW1lbnQodmFsdWUpXG59XG5cbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi9iNWFjOTYzZmI3OTFkMTI5OGU3ZjM5NjIzNjM4M2JjOTU1ZjkxNmMxL3NyYy9pc29tb3JwaGljL2NsYXNzaWMvZWxlbWVudC9SZWFjdEVsZW1lbnQuanMjTDIxLUwyNVxudmFyIGNhblVzZVN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmZvcjtcbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBjYW5Vc2VTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykgOiAweGVhYzc7XG5cbmZ1bmN0aW9uIGlzUmVhY3RFbGVtZW50KHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFXG59XG5cbmZ1bmN0aW9uIGVtcHR5VGFyZ2V0KHZhbCkge1xuXHRyZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpID8gW10gOiB7fVxufVxuXG5mdW5jdGlvbiBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZCh2YWx1ZSwgb3B0aW9ucykge1xuXHRyZXR1cm4gKG9wdGlvbnMuY2xvbmUgIT09IGZhbHNlICYmIG9wdGlvbnMuaXNNZXJnZWFibGVPYmplY3QodmFsdWUpKVxuXHRcdD8gZGVlcG1lcmdlKGVtcHR5VGFyZ2V0KHZhbHVlKSwgdmFsdWUsIG9wdGlvbnMpXG5cdFx0OiB2YWx1ZVxufVxuXG5mdW5jdGlvbiBkZWZhdWx0QXJyYXlNZXJnZSh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucykge1xuXHRyZXR1cm4gdGFyZ2V0LmNvbmNhdChzb3VyY2UpLm1hcChmdW5jdGlvbihlbGVtZW50KSB7XG5cdFx0cmV0dXJuIGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkKGVsZW1lbnQsIG9wdGlvbnMpXG5cdH0pXG59XG5cbmZ1bmN0aW9uIGdldE1lcmdlRnVuY3Rpb24oa2V5LCBvcHRpb25zKSB7XG5cdGlmICghb3B0aW9ucy5jdXN0b21NZXJnZSkge1xuXHRcdHJldHVybiBkZWVwbWVyZ2Vcblx0fVxuXHR2YXIgY3VzdG9tTWVyZ2UgPSBvcHRpb25zLmN1c3RvbU1lcmdlKGtleSk7XG5cdHJldHVybiB0eXBlb2YgY3VzdG9tTWVyZ2UgPT09ICdmdW5jdGlvbicgPyBjdXN0b21NZXJnZSA6IGRlZXBtZXJnZVxufVxuXG5mdW5jdGlvbiBnZXRFbnVtZXJhYmxlT3duUHJvcGVydHlTeW1ib2xzKHRhcmdldCkge1xuXHRyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc1xuXHRcdD8gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0YXJnZXQpLmZpbHRlcihmdW5jdGlvbihzeW1ib2wpIHtcblx0XHRcdHJldHVybiBPYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0YXJnZXQsIHN5bWJvbClcblx0XHR9KVxuXHRcdDogW11cbn1cblxuZnVuY3Rpb24gZ2V0S2V5cyh0YXJnZXQpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKHRhcmdldCkuY29uY2F0KGdldEVudW1lcmFibGVPd25Qcm9wZXJ0eVN5bWJvbHModGFyZ2V0KSlcbn1cblxuZnVuY3Rpb24gcHJvcGVydHlJc09uT2JqZWN0KG9iamVjdCwgcHJvcGVydHkpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gcHJvcGVydHkgaW4gb2JqZWN0XG5cdH0gY2F0Y2goXykge1xuXHRcdHJldHVybiBmYWxzZVxuXHR9XG59XG5cbi8vIFByb3RlY3RzIGZyb20gcHJvdG90eXBlIHBvaXNvbmluZyBhbmQgdW5leHBlY3RlZCBtZXJnaW5nIHVwIHRoZSBwcm90b3R5cGUgY2hhaW4uXG5mdW5jdGlvbiBwcm9wZXJ0eUlzVW5zYWZlKHRhcmdldCwga2V5KSB7XG5cdHJldHVybiBwcm9wZXJ0eUlzT25PYmplY3QodGFyZ2V0LCBrZXkpIC8vIFByb3BlcnRpZXMgYXJlIHNhZmUgdG8gbWVyZ2UgaWYgdGhleSBkb24ndCBleGlzdCBpbiB0aGUgdGFyZ2V0IHlldCxcblx0XHQmJiAhKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRhcmdldCwga2V5KSAvLyB1bnNhZmUgaWYgdGhleSBleGlzdCB1cCB0aGUgcHJvdG90eXBlIGNoYWluLFxuXHRcdFx0JiYgT2JqZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodGFyZ2V0LCBrZXkpKSAvLyBhbmQgYWxzbyB1bnNhZmUgaWYgdGhleSdyZSBub25lbnVtZXJhYmxlLlxufVxuXG5mdW5jdGlvbiBtZXJnZU9iamVjdCh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucykge1xuXHR2YXIgZGVzdGluYXRpb24gPSB7fTtcblx0aWYgKG9wdGlvbnMuaXNNZXJnZWFibGVPYmplY3QodGFyZ2V0KSkge1xuXHRcdGdldEtleXModGFyZ2V0KS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuXHRcdFx0ZGVzdGluYXRpb25ba2V5XSA9IGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkKHRhcmdldFtrZXldLCBvcHRpb25zKTtcblx0XHR9KTtcblx0fVxuXHRnZXRLZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcblx0XHRpZiAocHJvcGVydHlJc1Vuc2FmZSh0YXJnZXQsIGtleSkpIHtcblx0XHRcdHJldHVyblxuXHRcdH1cblxuXHRcdGlmIChwcm9wZXJ0eUlzT25PYmplY3QodGFyZ2V0LCBrZXkpICYmIG9wdGlvbnMuaXNNZXJnZWFibGVPYmplY3Qoc291cmNlW2tleV0pKSB7XG5cdFx0XHRkZXN0aW5hdGlvbltrZXldID0gZ2V0TWVyZ2VGdW5jdGlvbihrZXksIG9wdGlvbnMpKHRhcmdldFtrZXldLCBzb3VyY2Vba2V5XSwgb3B0aW9ucyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRlc3RpbmF0aW9uW2tleV0gPSBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZChzb3VyY2Vba2V5XSwgb3B0aW9ucyk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIGRlc3RpbmF0aW9uXG59XG5cbmZ1bmN0aW9uIGRlZXBtZXJnZSh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucykge1xuXHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblx0b3B0aW9ucy5hcnJheU1lcmdlID0gb3B0aW9ucy5hcnJheU1lcmdlIHx8IGRlZmF1bHRBcnJheU1lcmdlO1xuXHRvcHRpb25zLmlzTWVyZ2VhYmxlT2JqZWN0ID0gb3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdCB8fCBpc01lcmdlYWJsZU9iamVjdDtcblx0Ly8gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQgaXMgYWRkZWQgdG8gYG9wdGlvbnNgIHNvIHRoYXQgY3VzdG9tIGFycmF5TWVyZ2UoKVxuXHQvLyBpbXBsZW1lbnRhdGlvbnMgY2FuIHVzZSBpdC4gVGhlIGNhbGxlciBtYXkgbm90IHJlcGxhY2UgaXQuXG5cdG9wdGlvbnMuY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQgPSBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZDtcblxuXHR2YXIgc291cmNlSXNBcnJheSA9IEFycmF5LmlzQXJyYXkoc291cmNlKTtcblx0dmFyIHRhcmdldElzQXJyYXkgPSBBcnJheS5pc0FycmF5KHRhcmdldCk7XG5cdHZhciBzb3VyY2VBbmRUYXJnZXRUeXBlc01hdGNoID0gc291cmNlSXNBcnJheSA9PT0gdGFyZ2V0SXNBcnJheTtcblxuXHRpZiAoIXNvdXJjZUFuZFRhcmdldFR5cGVzTWF0Y2gpIHtcblx0XHRyZXR1cm4gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQoc291cmNlLCBvcHRpb25zKVxuXHR9IGVsc2UgaWYgKHNvdXJjZUlzQXJyYXkpIHtcblx0XHRyZXR1cm4gb3B0aW9ucy5hcnJheU1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKVxuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBtZXJnZU9iamVjdCh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucylcblx0fVxufVxuXG5kZWVwbWVyZ2UuYWxsID0gZnVuY3Rpb24gZGVlcG1lcmdlQWxsKGFycmF5LCBvcHRpb25zKSB7XG5cdGlmICghQXJyYXkuaXNBcnJheShhcnJheSkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2ZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhbiBhcnJheScpXG5cdH1cblxuXHRyZXR1cm4gYXJyYXkucmVkdWNlKGZ1bmN0aW9uKHByZXYsIG5leHQpIHtcblx0XHRyZXR1cm4gZGVlcG1lcmdlKHByZXYsIG5leHQsIG9wdGlvbnMpXG5cdH0sIHt9KVxufTtcblxudmFyIGRlZXBtZXJnZV8xID0gZGVlcG1lcmdlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZXBtZXJnZV8xO1xuIiwiaW1wb3J0IG1lcmdlRGVlcCBmcm9tICdkZWVwbWVyZ2UnO1xuXG50eXBlIERlZXBQYXJ0aWFsPFQ+ID0ge1xuICBbUCBpbiBrZXlvZiBUXT86IERlZXBQYXJ0aWFsPFRbUF0+O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBBY3R1YWxDcGZGb3JtYXR0aW5nT3B0aW9uczxPbkVyckZhbGxiYWNrPiB7XG4gIGRlbGltaXRlcnM6IHtcbiAgICBkYXNoOiBzdHJpbmc7XG4gICAgZG90OiBzdHJpbmc7XG4gIH07XG4gIGVzY2FwZTogYm9vbGVhbjtcbiAgaGlkZGVuOiBib29sZWFuO1xuICBoaWRkZW5LZXk6IHN0cmluZztcbiAgaGlkZGVuUmFuZ2U6IHtcbiAgICBlbmQ6IG51bWJlcjtcbiAgICBzdGFydDogbnVtYmVyO1xuICB9O1xuICBvbkZhaWw6ICh2YWx1ZTogc3RyaW5nLCBlcnJvcjogRXJyb3IpID0+IE9uRXJyRmFsbGJhY2s7XG59XG5cbmV4cG9ydCB0eXBlIENwZkZvcm1hdHRpbmdPcHRpb25zPE9uRXJyRmFsbGJhY2s+ID0gRGVlcFBhcnRpYWw8XG4gIEFjdHVhbENwZkZvcm1hdHRpbmdPcHRpb25zPE9uRXJyRmFsbGJhY2s+XG4+O1xuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogQWN0dWFsQ3BmRm9ybWF0dGluZ09wdGlvbnM8c3RyaW5nPiA9IHtcbiAgZGVsaW1pdGVyczoge1xuICAgIGRvdDogJy4nLFxuICAgIGRhc2g6ICctJyxcbiAgfSxcbiAgaGlkZGVuUmFuZ2U6IHtcbiAgICBzdGFydDogMyxcbiAgICBlbmQ6IDEwLFxuICB9LFxuICBvbkZhaWw6ICh2YWx1ZSkgPT4gdmFsdWUsXG4gIGhpZGRlbktleTogJyonLFxuICBoaWRkZW46IGZhbHNlLFxuICBlc2NhcGU6IGZhbHNlLFxufTtcblxuLyoqXG4gKiBNZXJnZSBjdXN0b20gb3B0aW9ucyB0byB0aGUgZGVmYXVsdCBvbmVzLlxuICovXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnM8T25FcnJGYWxsYmFjaz4oXG4gIGN1c3RvbU9wdGlvbnM6IENwZkZvcm1hdHRpbmdPcHRpb25zPE9uRXJyRmFsbGJhY2s+ID0ge30sXG4pOiBBY3R1YWxDcGZGb3JtYXR0aW5nT3B0aW9uczxPbkVyckZhbGxiYWNrPiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBtZXJnZURlZXAoXG4gICAgZGVmYXVsdE9wdGlvbnMsXG4gICAgY3VzdG9tT3B0aW9ucyxcbiAgKSBhcyBBY3R1YWxDcGZGb3JtYXR0aW5nT3B0aW9uczxPbkVyckZhbGxiYWNrPjtcblxuICBpZiAob3B0aW9ucy5oaWRkZW4pIHtcbiAgICBpZiAoXG4gICAgICBpc05hTihvcHRpb25zLmhpZGRlblJhbmdlLnN0YXJ0KSB8fFxuICAgICAgb3B0aW9ucy5oaWRkZW5SYW5nZS5zdGFydCA8IDAgfHxcbiAgICAgIG9wdGlvbnMuaGlkZGVuUmFuZ2Uuc3RhcnQgPiAxMFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT3B0aW9uIFwiaGlkZGVuUmFuZ2Uuc3RhcnRcIiBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMTAuJyk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgaXNOYU4ob3B0aW9ucy5oaWRkZW5SYW5nZS5lbmQpIHx8XG4gICAgICBvcHRpb25zLmhpZGRlblJhbmdlLmVuZCA8IDAgfHxcbiAgICAgIG9wdGlvbnMuaGlkZGVuUmFuZ2UuZW5kID4gMTBcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ09wdGlvbiBcImhpZGRlblJhbmdlLmVuZFwiIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxMC4nKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5oaWRkZW5SYW5nZS5zdGFydCA+IG9wdGlvbnMuaGlkZGVuUmFuZ2UuZW5kKSB7XG4gICAgICBjb25zdCBhdXggPSBvcHRpb25zLmhpZGRlblJhbmdlLnN0YXJ0O1xuICAgICAgb3B0aW9ucy5oaWRkZW5SYW5nZS5zdGFydCA9IG9wdGlvbnMuaGlkZGVuUmFuZ2UuZW5kO1xuICAgICAgb3B0aW9ucy5oaWRkZW5SYW5nZS5lbmQgPSBhdXg7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLm9uRmFpbCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBvcHRpb24gXCJvbkZhaWxcIiBtdXN0IGJlIGEgY2FsbGJhY2sgZnVuY3Rpb24uJyk7XG4gIH1cblxuICByZXR1cm4gb3B0aW9ucztcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWVyZ2VPcHRpb25zO1xuIiwiaW1wb3J0IHsgZXNjYXBlIGFzIGVzY2FwZUhUTUwgfSBmcm9tICdodG1sLWVzY2FwZXInO1xuaW1wb3J0IG51bU9ubHkgZnJvbSAnbnVtLW9ubHknO1xuXG5pbXBvcnQgbWVyZ2VPcHRpb25zIGZyb20gJy4vbWVyZ2Utb3B0aW9ucyc7XG5pbXBvcnQgdHlwZSB7IENwZkZvcm1hdHRpbmdPcHRpb25zIH0gZnJvbSAnLi9tZXJnZS1vcHRpb25zJztcblxuLyoqXG4gKiBGb3JtYXQgYSBnaXZlbiBDUEYgY2hhciBzZXF1ZW5jZS5cbiAqL1xuZnVuY3Rpb24gY3BmRm10PE9uRXJyRmFsbGJhY2sgPSBzdHJpbmc+KFxuICBjcGZTdHJpbmc6IHN0cmluZyxcbiAgb3B0aW9ucz86IENwZkZvcm1hdHRpbmdPcHRpb25zPE9uRXJyRmFsbGJhY2s+LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgQ1BGX0xFTkdUSCA9IDExO1xuICBjb25zdCBjcGZBcnJheSA9IG51bU9ubHkoY3BmU3RyaW5nKS5zcGxpdCgnJyk7XG4gIGNvbnN0IGN1c3RvbU9wdGlvbnMgPSBtZXJnZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgaWYgKGNwZkFycmF5Lmxlbmd0aCAhPT0gQ1BGX0xFTkdUSCkge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBQYXJhbWV0ZXIgXCIke2NwZlN0cmluZ31cIiBkb2VzIG5vdCBjb250YWluICR7Q1BGX0xFTkdUSH0gZGlnaXRzLmApO1xuXG4gICAgcmV0dXJuIGN1c3RvbU9wdGlvbnMub25GYWlsKGNwZlN0cmluZywgZXJyb3IpIGFzIHN0cmluZztcbiAgfVxuXG4gIGlmIChjdXN0b21PcHRpb25zLmhpZGRlbikge1xuICAgIGZvciAobGV0IGkgPSBjdXN0b21PcHRpb25zLmhpZGRlblJhbmdlLnN0YXJ0OyBpIDw9IGN1c3RvbU9wdGlvbnMuaGlkZGVuUmFuZ2UuZW5kOyBpKyspIHtcbiAgICAgIGNwZkFycmF5W2ldID0gY3VzdG9tT3B0aW9ucy5oaWRkZW5LZXk7XG4gICAgfVxuICB9XG5cbiAgY3BmQXJyYXkuc3BsaWNlKDksIDAsIGN1c3RvbU9wdGlvbnMuZGVsaW1pdGVycy5kYXNoKTtcbiAgY3BmQXJyYXkuc3BsaWNlKDYsIDAsIGN1c3RvbU9wdGlvbnMuZGVsaW1pdGVycy5kb3QpO1xuICBjcGZBcnJheS5zcGxpY2UoMywgMCwgY3VzdG9tT3B0aW9ucy5kZWxpbWl0ZXJzLmRvdCk7XG4gIGNvbnN0IGNwZlByZXR0eSA9IGNwZkFycmF5LmpvaW4oJycpO1xuXG4gIGlmIChjdXN0b21PcHRpb25zLmVzY2FwZSkge1xuICAgIHJldHVybiBlc2NhcGVIVE1MKGNwZlByZXR0eSk7XG4gIH1cblxuICByZXR1cm4gY3BmUHJldHR5O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcGZGbXQ7XG4iXSwibmFtZXMiOlsicmVwbGFjZSIsImNhIiwiZXNjYSIsInBlIiwibSIsImJ1aWxkIiwidGFyZ2V0IiwiU3RyaW5nIiwiaXNNZXJnZWFibGVPYmplY3QiLCJ2YWx1ZSIsImlzTm9uTnVsbE9iamVjdCIsInN0cmluZ1ZhbHVlIiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiJCR0eXBlb2YiLCJSRUFDVF9FTEVNRU5UX1RZUEUiLCJpc1JlYWN0RWxlbWVudCIsImlzU3BlY2lhbCIsIlN5bWJvbCIsImZvciIsImNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkIiwib3B0aW9ucyIsImNsb25lIiwiZGVlcG1lcmdlIiwidmFsIiwiQXJyYXkiLCJpc0FycmF5IiwiZGVmYXVsdEFycmF5TWVyZ2UiLCJzb3VyY2UiLCJjb25jYXQiLCJtYXAiLCJlbGVtZW50IiwiZ2V0S2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJzeW1ib2wiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImdldEVudW1lcmFibGVPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wZXJ0eUlzT25PYmplY3QiLCJvYmplY3QiLCJwcm9wZXJ0eSIsIl8iLCJtZXJnZU9iamVjdCIsImRlc3RpbmF0aW9uIiwiZm9yRWFjaCIsImtleSIsImhhc093blByb3BlcnR5IiwicHJvcGVydHlJc1Vuc2FmZSIsImN1c3RvbU1lcmdlIiwiZ2V0TWVyZ2VGdW5jdGlvbiIsImFycmF5TWVyZ2UiLCJzb3VyY2VJc0FycmF5IiwiYWxsIiwiYXJyYXkiLCJFcnJvciIsInJlZHVjZSIsInByZXYiLCJuZXh0IiwiY2pzIiwiZGVmYXVsdE9wdGlvbnMiLCJkZWxpbWl0ZXJzIiwiZG90IiwiZGFzaCIsImhpZGRlblJhbmdlIiwic3RhcnQiLCJlbmQiLCJvbkZhaWwiLCJoaWRkZW5LZXkiLCJoaWRkZW4iLCJlc2NhcGUiLCJjcGZTdHJpbmciLCJjcGZBcnJheSIsIm51bU9ubHkiLCJzcGxpdCIsImN1c3RvbU9wdGlvbnMiLCJtZXJnZURlZXAiLCJpc05hTiIsIlR5cGVFcnJvciIsImF1eCIsIm1lcmdlT3B0aW9ucyIsImxlbmd0aCIsImVycm9yIiwiaSIsInNwbGljZSIsImVzIiwiY3BmUHJldHR5Iiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O3VPQXNCQSxNQUFNQSxRQUFDQSxHQUFXLEdBSVpDLEVBQUssV0FFTEMsRUFBTyxDQUNYLElBQUssUUFDTCxJQUFLLE9BQ0wsSUFBSyxPQUNMLElBQUssUUFDTCxJQUFLLFVBRURDLEVBQUtDLEdBQUtGLEVBQUtFLG9JQzdCckJDLEVBSkEsU0FBaUJDLEdBQ2YsT0FBT0MsT0FBT0QsR0FBUU4sUUFBUSxNQUFPLEdBQ3ZDLHlDQ0ZBLElBQUlRLEVBQW9CLFNBQTJCQyxHQUNsRCxPQUlELFNBQXlCQSxHQUN4QixRQUFTQSxHQUEwQixpQkFBVkEsQ0FDMUIsQ0FOUUMsQ0FBZ0JELEtBUXhCLFNBQW1CQSxHQUNsQixJQUFJRSxFQUFjQyxPQUFPQyxVQUFVQyxTQUFTQyxLQUFLTixHQUVqRCxNQUF1QixvQkFBaEJFLEdBQ2Esa0JBQWhCQSxHQVFMLFNBQXdCRixHQUN2QixPQUFPQSxFQUFNTyxXQUFhQyxDQUMzQixDQVRLQyxDQUFlVCxFQUNwQixDQWJNVSxDQUFVVixFQUNoQixFQWdCSVEsRUFEaUMsbUJBQVhHLFFBQXlCQSxPQUFPQyxJQUNsQkQsT0FBT0MsSUFBSSxpQkFBbUIsTUFVdEUsU0FBU0MsRUFBOEJiLEVBQU9jLEdBQzdDLE9BQTBCLElBQWxCQSxFQUFRQyxPQUFtQkQsRUFBUWYsa0JBQWtCQyxHQUMxRGdCLEdBTmlCQyxFQU1LakIsRUFMbEJrQixNQUFNQyxRQUFRRixHQUFPLEdBQUssQ0FBQSxHQUtBakIsRUFBT2MsR0FDckNkLEVBUEosSUFBcUJpQixDQVFyQixDQUVBLFNBQVNHLEVBQWtCdkIsRUFBUXdCLEVBQVFQLEdBQzFDLE9BQU9q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 |
+13
-13
| { | ||
| "name": "@lacussoft/cpf-fmt", | ||
| "version": "2.0.1", | ||
| "version": "2.0.2", | ||
| "description": "Utility function to format CNPJ (Brazilian personal ID)", | ||
@@ -48,5 +48,5 @@ "license": "MIT", | ||
| "type-check": "tsc --noEmit", | ||
| "lint": "eslint --fix src/ test/ rollup.config.mjs", | ||
| "lint": "eslint --fix src/ tests/ rollup.config.mjs", | ||
| "pretest": "bun run build --silent", | ||
| "test": "bun test --coverage --coverage-reporter=lcov --coverage-dir=test/__coverage__", | ||
| "test": "bun test --coverage --coverage-reporter=lcov --coverage-dir=tests/__coverage__", | ||
| "test:ci": "bun test" | ||
@@ -57,20 +57,20 @@ }, | ||
| "html-escaper": "^3.0.3", | ||
| "num-only": "^1.2.6" | ||
| "num-only": "^1.2.8" | ||
| }, | ||
| "devDependencies": { | ||
| "@babel/preset-env": "^7.28.3", | ||
| "@rollup/plugin-babel": "^6.0.4", | ||
| "@rollup/plugin-commonjs": "^28.0.6", | ||
| "@rollup/plugin-node-resolve": "^16.0.1", | ||
| "@babel/preset-env": "^7.28.5", | ||
| "@rollup/plugin-babel": "^6.1.0", | ||
| "@rollup/plugin-commonjs": "^29.0.0", | ||
| "@rollup/plugin-node-resolve": "^16.0.3", | ||
| "@rollup/plugin-terser": "~0.4.4", | ||
| "@rollup/plugin-typescript": "^12.1.4", | ||
| "@rollup/plugin-typescript": "^12.3.0", | ||
| "@types/deepmerge": "^2.2.3", | ||
| "@types/html-escaper": "^3.0.4", | ||
| "@types/node": "^22.17.2", | ||
| "rollup": "^4.47.1", | ||
| "@types/node": "^22.19.1", | ||
| "rollup": "^4.53.3", | ||
| "rollup-plugin-delete": "^3.0.1", | ||
| "rollup-plugin-dts": "^6.2.3", | ||
| "rollup-plugin-dts": "^6.3.0", | ||
| "rollup-plugin-esbuild": "^6.2.1", | ||
| "typescript": "^5.9.2" | ||
| "typescript": "^5.9.3" | ||
| } | ||
| } |
+3
-3
@@ -1,2 +0,2 @@ | ||
| # Lacus :: cpf-fmt | ||
|  | ||
@@ -86,3 +86,3 @@ [](https://npmjs.com/package/@lacussoft/cpf-fmt) | ||
| We welcome contributions! Please see our [Contributing Guidelines](./CONTRIBUTING.md) for details. But if you find this project helpful, please consider: | ||
| We welcome contributions! Please see our [Contributing Guidelines](https://github.com/LacusSolutions/br-utils-js/blob/main/CONTRIBUTING.md) for details. But if you find this project helpful, please consider: | ||
@@ -100,3 +100,3 @@ - ⭐ Starring the repository | ||
| See [CHANGELOG](tps://github.com/LacusSolutions/br-utils-js/blob/main/CHANGELOG.md) for a list of changes and version history. | ||
| See [CHANGELOG](https://github.com/LacusSolutions/br-utils-js/blob/main/packages/cpf-fmt/CHANGELOG.md) for a list of changes and version history. | ||
@@ -103,0 +103,0 @@ --- |
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
97655
9.82%14
55.56%907
37.22%2
Infinity%Updated