Socket
Socket
Sign inDemoInstall

@glimmer/reference

Package Overview
Dependencies
Maintainers
12
Versions
286
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/reference - npm Package Compare versions

Comparing version 0.79.4 to 0.80.0

2

dist/amd/es5/glimmer-reference.js

@@ -493,2 +493,2 @@ define('@glimmer/reference', ['exports', '@glimmer/env', '@glimmer/global-context', '@glimmer/util', '@glimmer/validator'], function (exports, env, globalContext, util, validator) { 'use strict';

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xpbW1lci1yZWZlcmVuY2UuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3JlZmVyZW5jZS9saWIvcmVmZXJlbmNlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvcmVmZXJlbmNlL2xpYi9pdGVyYWJsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBnZXRQcm9wLCBzZXRQcm9wIH0gZnJvbSAnQGdsaW1tZXIvZ2xvYmFsLWNvbnRleHQnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBleHBlY3QsIGlzRGljdCwgc3ltYm9sIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDT05TVEFOVF9UQUcsXG4gIGNvbnN1bWVUYWcsXG4gIElOSVRJQUwsXG4gIFJldmlzaW9uLFxuICBUYWcsXG4gIHRyYWNrLFxuICB2YWxpZGF0ZVRhZyxcbiAgdmFsdWVGb3JUYWcsXG59IGZyb20gJ0BnbGltbWVyL3ZhbGlkYXRvcic7XG5cbmV4cG9ydCBjb25zdCBSRUZFUkVOQ0U6IHVuaXF1ZSBzeW1ib2wgPSBzeW1ib2woJ1JFRkVSRU5DRScpO1xuXG5jb25zdCBlbnVtIFJlZmVyZW5jZVR5cGUge1xuICBDb25zdGFudCxcbiAgQ29tcHV0ZSxcbiAgVW5ib3VuZCxcbiAgSW52b2thYmxlLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZTxfVCA9IHVua25vd24+IHtcbiAgW1JFRkVSRU5DRV06IFJlZmVyZW5jZVR5cGU7XG4gIGRlYnVnTGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlZmVyZW5jZTtcblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZUVudmlyb25tZW50IHtcbiAgZ2V0UHJvcChvYmo6IHVua25vd24sIHBhdGg6IHN0cmluZyk6IHVua25vd247XG4gIHNldFByb3Aob2JqOiB1bmtub3duLCBwYXRoOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdW5rbm93bjtcbn1cblxuY2xhc3MgUmVmZXJlbmNlSW1wbDxUID0gdW5rbm93bj4gaW1wbGVtZW50cyBSZWZlcmVuY2Uge1xuICBbUkVGRVJFTkNFXTogUmVmZXJlbmNlVHlwZTtcbiAgcHVibGljIHRhZzogT3B0aW9uPFRhZz4gPSBudWxsO1xuICBwdWJsaWMgbGFzdFJldmlzaW9uOiBSZXZpc2lvbiA9IElOSVRJQUw7XG4gIHB1YmxpYyBsYXN0VmFsdWU/OiBUO1xuXG4gIHB1YmxpYyBjaGlsZHJlbjogT3B0aW9uPE1hcDxzdHJpbmcgfCBSZWZlcmVuY2UsIFJlZmVyZW5jZT4+ID0gbnVsbDtcblxuICBwdWJsaWMgY29tcHV0ZTogT3B0aW9uPCgpID0+IFQ+ID0gbnVsbDtcbiAgcHVibGljIHVwZGF0ZTogT3B0aW9uPCh2YWw6IFQpID0+IHZvaWQ+ID0gbnVsbDtcblxuICBwdWJsaWMgZGVidWdMYWJlbD86IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih0eXBlOiBSZWZlcmVuY2VUeXBlKSB7XG4gICAgdGhpc1tSRUZFUkVOQ0VdID0gdHlwZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJpbWl0aXZlUmVmKHZhbHVlOiB1bmtub3duKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsKFJlZmVyZW5jZVR5cGUuVW5ib3VuZCk7XG5cbiAgcmVmLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgcmVmLmxhc3RWYWx1ZSA9IHZhbHVlO1xuXG4gIGlmIChERUJVRykge1xuICAgIHJlZi5kZWJ1Z0xhYmVsID0gU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBjb25zdCBVTkRFRklORURfUkVGRVJFTkNFID0gY3JlYXRlUHJpbWl0aXZlUmVmKHVuZGVmaW5lZCk7XG5leHBvcnQgY29uc3QgTlVMTF9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYobnVsbCk7XG5leHBvcnQgY29uc3QgVFJVRV9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYodHJ1ZSk7XG5leHBvcnQgY29uc3QgRkFMU0VfUkVGRVJFTkNFID0gY3JlYXRlUHJpbWl0aXZlUmVmKGZhbHNlKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnN0UmVmKHZhbHVlOiB1bmtub3duLCBkZWJ1Z0xhYmVsOiBmYWxzZSB8IHN0cmluZyk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWYgPSBuZXcgUmVmZXJlbmNlSW1wbChSZWZlcmVuY2VUeXBlLkNvbnN0YW50KTtcblxuICByZWYubGFzdFZhbHVlID0gdmFsdWU7XG4gIHJlZi50YWcgPSBDT05TVEFOVF9UQUc7XG5cbiAgaWYgKERFQlVHKSB7XG4gICAgcmVmLmRlYnVnTGFiZWwgPSBkZWJ1Z0xhYmVsIGFzIHN0cmluZztcbiAgfVxuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVbmJvdW5kUmVmKHZhbHVlOiB1bmtub3duLCBkZWJ1Z0xhYmVsOiBmYWxzZSB8IHN0cmluZyk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWYgPSBuZXcgUmVmZXJlbmNlSW1wbChSZWZlcmVuY2VUeXBlLlVuYm91bmQpO1xuXG4gIHJlZi5sYXN0VmFsdWUgPSB2YWx1ZTtcbiAgcmVmLnRhZyA9IENPTlNUQU5UX1RBRztcblxuICBpZiAoREVCVUcpIHtcbiAgICByZWYuZGVidWdMYWJlbCA9IGRlYnVnTGFiZWwgYXMgc3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbXB1dGVSZWY8VCA9IHVua25vd24+KFxuICBjb21wdXRlOiAoKSA9PiBULFxuICB1cGRhdGU6IE9wdGlvbjwodmFsdWU6IFQpID0+IHZvaWQ+ID0gbnVsbCxcbiAgZGVidWdMYWJlbDogZmFsc2UgfCBzdHJpbmcgPSAndW5rbm93bidcbik6IFJlZmVyZW5jZTxUPiB7XG4gIGxldCByZWYgPSBuZXcgUmVmZXJlbmNlSW1wbDxUPihSZWZlcmVuY2VUeXBlLkNvbXB1dGUpO1xuXG4gIHJlZi5jb21wdXRlID0gY29tcHV0ZTtcbiAgcmVmLnVwZGF0ZSA9IHVwZGF0ZTtcblxuICBpZiAoREVCVUcpIHtcbiAgICByZWYuZGVidWdMYWJlbCA9IGAocmVzdWx0IG9mIGEgXFxgJHtkZWJ1Z0xhYmVsfVxcYCBoZWxwZXIpYDtcbiAgfVxuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWFkT25seVJlZihyZWY6IFJlZmVyZW5jZSk6IFJlZmVyZW5jZSB7XG4gIGlmICghaXNVcGRhdGFibGVSZWYocmVmKSkgcmV0dXJuIHJlZjtcblxuICByZXR1cm4gY3JlYXRlQ29tcHV0ZVJlZigoKSA9PiB2YWx1ZUZvclJlZihyZWYpLCBudWxsLCByZWYuZGVidWdMYWJlbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ludm9rYWJsZVJlZihyZWY6IFJlZmVyZW5jZSkge1xuICByZXR1cm4gcmVmW1JFRkVSRU5DRV0gPT09IFJlZmVyZW5jZVR5cGUuSW52b2thYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW52b2thYmxlUmVmKGlubmVyOiBSZWZlcmVuY2UpOiBSZWZlcmVuY2Uge1xuICBsZXQgcmVmID0gY3JlYXRlQ29tcHV0ZVJlZihcbiAgICAoKSA9PiB2YWx1ZUZvclJlZihpbm5lciksXG4gICAgKHZhbHVlKSA9PiB1cGRhdGVSZWYoaW5uZXIsIHZhbHVlKVxuICApO1xuICByZWYuZGVidWdMYWJlbCA9IGlubmVyLmRlYnVnTGFiZWw7XG4gIHJlZltSRUZFUkVOQ0VdID0gUmVmZXJlbmNlVHlwZS5JbnZva2FibGU7XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uc3RSZWYoX3JlZjogUmVmZXJlbmNlKSB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw7XG5cbiAgcmV0dXJuIHJlZi50YWcgPT09IENPTlNUQU5UX1RBRztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXBkYXRhYmxlUmVmKF9yZWY6IFJlZmVyZW5jZSkge1xuICBsZXQgcmVmID0gX3JlZiBhcyBSZWZlcmVuY2VJbXBsO1xuXG4gIHJldHVybiByZWYudXBkYXRlICE9PSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGb3JSZWY8VD4oX3JlZjogUmVmZXJlbmNlPFQ+KTogVCB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw8VD47XG5cbiAgbGV0IHsgdGFnIH0gPSByZWY7XG5cbiAgaWYgKHRhZyA9PT0gQ09OU1RBTlRfVEFHKSB7XG4gICAgcmV0dXJuIHJlZi5sYXN0VmFsdWUgYXMgVDtcbiAgfVxuXG4gIGxldCB7IGxhc3RSZXZpc2lvbiB9ID0gcmVmO1xuICBsZXQgbGFzdFZhbHVlO1xuXG4gIGlmICh0YWcgPT09IG51bGwgfHwgIXZhbGlkYXRlVGFnKHRhZywgbGFzdFJldmlzaW9uKSkge1xuICAgIGxldCB7IGNvbXB1dGUgfSA9IHJlZjtcblxuICAgIHRhZyA9IHJlZi50YWcgPSB0cmFjaygoKSA9PiB7XG4gICAgICBsYXN0VmFsdWUgPSByZWYubGFzdFZhbHVlID0gY29tcHV0ZSEoKTtcbiAgICB9LCBERUJVRyAmJiByZWYuZGVidWdMYWJlbCk7XG5cbiAgICByZWYubGFzdFJldmlzaW9uID0gdmFsdWVGb3JUYWcodGFnKTtcbiAgfSBlbHNlIHtcbiAgICBsYXN0VmFsdWUgPSByZWYubGFzdFZhbHVlO1xuICB9XG5cbiAgY29uc3VtZVRhZyh0YWcpO1xuXG4gIHJldHVybiBsYXN0VmFsdWUgYXMgVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVJlZihfcmVmOiBSZWZlcmVuY2UsIHZhbHVlOiB1bmtub3duKSB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw7XG5cbiAgbGV0IHVwZGF0ZSA9IGV4cGVjdChyZWYudXBkYXRlLCAnY2FsbGVkIHVwZGF0ZSBvbiBhIG5vbi11cGRhdGFibGUgcmVmZXJlbmNlJyk7XG5cbiAgdXBkYXRlKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoaWxkUmVmRm9yKF9wYXJlbnRSZWY6IFJlZmVyZW5jZSwgcGF0aDogc3RyaW5nKTogUmVmZXJlbmNlIHtcbiAgbGV0IHBhcmVudFJlZiA9IF9wYXJlbnRSZWYgYXMgUmVmZXJlbmNlSW1wbDtcblxuICBsZXQgdHlwZSA9IHBhcmVudFJlZltSRUZFUkVOQ0VdO1xuXG4gIGxldCBjaGlsZHJlbiA9IHBhcmVudFJlZi5jaGlsZHJlbjtcbiAgbGV0IGNoaWxkOiBSZWZlcmVuY2U7XG5cbiAgaWYgKGNoaWxkcmVuID09PSBudWxsKSB7XG4gICAgY2hpbGRyZW4gPSBwYXJlbnRSZWYuY2hpbGRyZW4gPSBuZXcgTWFwKCk7XG4gIH0gZWxzZSB7XG4gICAgY2hpbGQgPSBjaGlsZHJlbi5nZXQocGF0aCkhO1xuXG4gICAgaWYgKGNoaWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZSA9PT0gUmVmZXJlbmNlVHlwZS5VbmJvdW5kKSB7XG4gICAgbGV0IHBhcmVudCA9IHZhbHVlRm9yUmVmKHBhcmVudFJlZik7XG5cbiAgICBpZiAoaXNEaWN0KHBhcmVudCkpIHtcbiAgICAgIGNoaWxkID0gY3JlYXRlVW5ib3VuZFJlZihcbiAgICAgICAgKHBhcmVudCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbcGF0aF0sXG4gICAgICAgIERFQlVHICYmIGAke3BhcmVudFJlZi5kZWJ1Z0xhYmVsfS4ke3BhdGh9YFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hpbGQgPSBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjaGlsZCA9IGNyZWF0ZUNvbXB1dGVSZWYoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGxldCBwYXJlbnQgPSB2YWx1ZUZvclJlZihwYXJlbnRSZWYpO1xuXG4gICAgICAgIGlmIChpc0RpY3QocGFyZW50KSkge1xuICAgICAgICAgIHJldHVybiBnZXRQcm9wKHBhcmVudCwgcGF0aCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAodmFsKSA9PiB7XG4gICAgICAgIGxldCBwYXJlbnQgPSB2YWx1ZUZvclJlZihwYXJlbnRSZWYpO1xuXG4gICAgICAgIGlmIChpc0RpY3QocGFyZW50KSkge1xuICAgICAgICAgIHJldHVybiBzZXRQcm9wKHBhcmVudCwgcGF0aCwgdmFsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGNoaWxkLmRlYnVnTGFiZWwgPSBgJHtwYXJlbnRSZWYuZGVidWdMYWJlbH0uJHtwYXRofWA7XG4gICAgfVxuICB9XG5cbiAgY2hpbGRyZW4uc2V0KHBhdGgsIGNoaWxkKTtcblxuICByZXR1cm4gY2hpbGQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGlsZFJlZkZyb21QYXJ0cyhyb290OiBSZWZlcmVuY2UsIHBhcnRzOiBzdHJpbmdbXSk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWZlcmVuY2UgPSByb290O1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICByZWZlcmVuY2UgPSBjaGlsZFJlZkZvcihyZWZlcmVuY2UsIHBhcnRzW2ldKTtcbiAgfVxuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBsZXQgY3JlYXRlRGVidWdBbGlhc1JlZjogdW5kZWZpbmVkIHwgKChkZWJ1Z0xhYmVsOiBzdHJpbmcsIGlubmVyOiBSZWZlcmVuY2UpID0+IFJlZmVyZW5jZSk7XG5cbmlmIChERUJVRykge1xuICBjcmVhdGVEZWJ1Z0FsaWFzUmVmID0gKGRlYnVnTGFiZWw6IHN0cmluZywgaW5uZXI6IFJlZmVyZW5jZSkgPT4ge1xuICAgIGxldCB1cGRhdGUgPSBpc1VwZGF0YWJsZVJlZihpbm5lcikgPyAodmFsdWU6IHVua25vd24pID0+IHVwZGF0ZVJlZihpbm5lciwgdmFsdWUpIDogbnVsbDtcbiAgICBsZXQgcmVmID0gY3JlYXRlQ29tcHV0ZVJlZigoKSA9PiB2YWx1ZUZvclJlZihpbm5lciksIHVwZGF0ZSk7XG5cbiAgICByZWZbUkVGRVJFTkNFXSA9IGlubmVyW1JFRkVSRU5DRV07XG5cbiAgICByZWYuZGVidWdMYWJlbCA9IGRlYnVnTGFiZWw7XG5cbiAgICByZXR1cm4gcmVmO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgZ2V0UGF0aCwgdG9JdGVyYXRvciB9IGZyb20gJ0BnbGltbWVyL2dsb2JhbC1jb250ZXh0JztcbmltcG9ydCB7IE9wdGlvbiwgRGljdCB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRU1QVFlfQVJSQVksIGlzT2JqZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBjcmVhdGVUYWcsIGNvbnN1bWVUYWcsIGRpcnR5VGFnIH0gZnJvbSAnQGdsaW1tZXIvdmFsaWRhdG9yJztcbmltcG9ydCB7IFJlZmVyZW5jZSwgUmVmZXJlbmNlRW52aXJvbm1lbnQsIHZhbHVlRm9yUmVmLCBjcmVhdGVDb21wdXRlUmVmIH0gZnJvbSAnLi9yZWZlcmVuY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZXJhdGlvbkl0ZW08VCwgVT4ge1xuICBrZXk6IHVua25vd247XG4gIHZhbHVlOiBUO1xuICBtZW1vOiBVO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0SXRlcmF0b3I8VCwgVSwgViBleHRlbmRzIEl0ZXJhdGlvbkl0ZW08VCwgVT4+IHtcbiAgaXNFbXB0eSgpOiBib29sZWFuO1xuICBuZXh0KCk6IE9wdGlvbjxWPjtcbn1cblxuZXhwb3J0IHR5cGUgT3BhcXVlSXRlcmF0aW9uSXRlbSA9IEl0ZXJhdGlvbkl0ZW08dW5rbm93biwgdW5rbm93bj47XG5leHBvcnQgdHlwZSBPcGFxdWVJdGVyYXRvciA9IEFic3RyYWN0SXRlcmF0b3I8dW5rbm93biwgdW5rbm93biwgT3BhcXVlSXRlcmF0aW9uSXRlbT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlcmF0b3JEZWxlZ2F0ZSB7XG4gIGlzRW1wdHkoKTogYm9vbGVhbjtcbiAgbmV4dCgpOiB7IHZhbHVlOiB1bmtub3duOyBtZW1vOiB1bmtub3duIH0gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZXJhdG9yUmVmZXJlbmNlRW52aXJvbm1lbnQgZXh0ZW5kcyBSZWZlcmVuY2VFbnZpcm9ubWVudCB7XG4gIGdldFBhdGgob2JqOiB1bmtub3duLCBwYXRoOiBzdHJpbmcpOiB1bmtub3duO1xuICB0b0l0ZXJhdG9yKG9iajogdW5rbm93bik6IE9wdGlvbjxJdGVyYXRvckRlbGVnYXRlPjtcbn1cblxudHlwZSBLZXlGb3IgPSAoaXRlbTogdW5rbm93biwgaW5kZXg6IHVua25vd24pID0+IHVua25vd247XG5cbmNvbnN0IE5VTExfSURFTlRJVFkgPSB7fTtcblxuY29uc3QgS0VZOiBLZXlGb3IgPSAoXywgaW5kZXgpID0+IGluZGV4O1xuY29uc3QgSU5ERVg6IEtleUZvciA9IChfLCBpbmRleCkgPT4gU3RyaW5nKGluZGV4KTtcbmNvbnN0IElERU5USVRZOiBLZXlGb3IgPSAoaXRlbSkgPT4ge1xuICBpZiAoaXRlbSA9PT0gbnVsbCkge1xuICAgIC8vIFJldHVybmluZyBudWxsIGFzIGFuIGlkZW50aXR5IHdpbGwgY2F1c2UgZmFpbHVyZXMgc2luY2UgdGhlIGl0ZXJhdG9yXG4gICAgLy8gY2FuJ3QgdGVsbCB0aGF0IGl0J3MgYWN0dWFsbHkgc3VwcG9zZWQgdG8gYmUgbnVsbFxuICAgIHJldHVybiBOVUxMX0lERU5USVRZO1xuICB9XG5cbiAgcmV0dXJuIGl0ZW07XG59O1xuXG5mdW5jdGlvbiBrZXlGb3JQYXRoKHBhdGg6IHN0cmluZyk6IEtleUZvciB7XG4gIGlmIChERUJVRyAmJiBwYXRoWzBdID09PSAnQCcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQga2V5cGF0aDogJyR7cGF0aH0nLCB2YWxpZCBrZXlzOiBAaW5kZXgsIEBpZGVudGl0eSwgb3IgYSBwYXRoYCk7XG4gIH1cbiAgcmV0dXJuIHVuaXF1ZUtleUZvcigoaXRlbSkgPT4gZ2V0UGF0aChpdGVtIGFzIG9iamVjdCwgcGF0aCkpO1xufVxuXG5mdW5jdGlvbiBtYWtlS2V5Rm9yKGtleTogc3RyaW5nKSB7XG4gIHN3aXRjaCAoa2V5KSB7XG4gICAgY2FzZSAnQGtleSc6XG4gICAgICByZXR1cm4gdW5pcXVlS2V5Rm9yKEtFWSk7XG4gICAgY2FzZSAnQGluZGV4JzpcbiAgICAgIHJldHVybiB1bmlxdWVLZXlGb3IoSU5ERVgpO1xuICAgIGNhc2UgJ0BpZGVudGl0eSc6XG4gICAgICByZXR1cm4gdW5pcXVlS2V5Rm9yKElERU5USVRZKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGtleUZvclBhdGgoa2V5KTtcbiAgfVxufVxuXG5jbGFzcyBXZWFrTWFwV2l0aFByaW1pdGl2ZXM8VD4ge1xuICBwcml2YXRlIF93ZWFrTWFwPzogV2Vha01hcDxvYmplY3QsIFQ+O1xuICBwcml2YXRlIF9wcmltaXRpdmVNYXA/OiBNYXA8dW5rbm93biwgVD47XG5cbiAgcHJpdmF0ZSBnZXQgd2Vha01hcCgpIHtcbiAgICBpZiAodGhpcy5fd2Vha01hcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl93ZWFrTWFwID0gbmV3IFdlYWtNYXAoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fd2Vha01hcDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHByaW1pdGl2ZU1hcCgpIHtcbiAgICBpZiAodGhpcy5fcHJpbWl0aXZlTWFwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3ByaW1pdGl2ZU1hcCA9IG5ldyBNYXAoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcHJpbWl0aXZlTWFwO1xuICB9XG5cbiAgc2V0KGtleTogdW5rbm93biwgdmFsdWU6IFQpIHtcbiAgICBpZiAoaXNPYmplY3Qoa2V5KSkge1xuICAgICAgdGhpcy53ZWFrTWFwLnNldChrZXkgYXMgb2JqZWN0LCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJpbWl0aXZlTWFwLnNldChrZXksIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQoa2V5OiB1bmtub3duKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGlzT2JqZWN0KGtleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLndlYWtNYXAuZ2V0KGtleSBhcyBvYmplY3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5wcmltaXRpdmVNYXAuZ2V0KGtleSk7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IElERU5USVRJRVMgPSBuZXcgV2Vha01hcFdpdGhQcmltaXRpdmVzPG9iamVjdFtdPigpO1xuXG5mdW5jdGlvbiBpZGVudGl0eUZvck50aE9jY3VyZW5jZSh2YWx1ZTogYW55LCBjb3VudDogbnVtYmVyKSB7XG4gIGxldCBpZGVudGl0aWVzID0gSURFTlRJVElFUy5nZXQodmFsdWUpO1xuXG4gIGlmIChpZGVudGl0aWVzID09PSB1bmRlZmluZWQpIHtcbiAgICBpZGVudGl0aWVzID0gW107XG4gICAgSURFTlRJVElFUy5zZXQodmFsdWUsIGlkZW50aXRpZXMpO1xuICB9XG5cbiAgbGV0IGlkZW50aXR5ID0gaWRlbnRpdGllc1tjb3VudF07XG5cbiAgaWYgKGlkZW50aXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICBpZGVudGl0eSA9IHsgdmFsdWUsIGNvdW50IH07XG4gICAgaWRlbnRpdGllc1tjb3VudF0gPSBpZGVudGl0eTtcbiAgfVxuXG4gIHJldHVybiBpZGVudGl0eTtcbn1cblxuLyoqXG4gKiBXaGVuIGl0ZXJhdGluZyBvdmVyIGEgbGlzdCwgaXQncyBwb3NzaWJsZSB0aGF0IGFuIGl0ZW0gd2l0aCB0aGUgc2FtZSB1bmlxdWVcbiAqIGtleSBjb3VsZCBiZSBlbmNvdW50ZXJlZCB0d2ljZTpcbiAqXG4gKiBgYGBqc1xuICogbGV0IGFyciA9IFsnc2FtZScsICdkaWZmZXJlbnQnLCAnc2FtZScsICdzYW1lJ107XG4gKiBgYGBcbiAqXG4gKiBJbiBnZW5lcmFsLCB3ZSB3YW50IHRvIHRyZWF0IHRoZXNlIGl0ZW1zIGFzIF91bmlxdWUgd2l0aGluIHRoZSBsaXN0Xy4gVG8gZG9cbiAqIHRoaXMsIHdlIHRyYWNrIHRoZSBvY2N1cmVuY2VzIG9mIGV2ZXJ5IGl0ZW0gYXMgd2UgaXRlcmF0ZSB0aGUgbGlzdCwgYW5kIHdoZW5cbiAqIGFuIGl0ZW0gb2NjdXJzIG1vcmUgdGhhbiBvbmNlLCB3ZSBnZW5lcmF0ZSBhIG5ldyB1bmlxdWUga2V5IGp1c3QgZm9yIHRoYXRcbiAqIGl0ZW0sIGFuZCB0aGF0IG9jY3VyZW5jZSB3aXRoaW4gdGhlIGxpc3QuIFRoZSBuZXh0IHRpbWUgd2UgaXRlcmF0ZSB0aGUgbGlzdCxcbiAqIGFuZCBlbmNvdW50ZXIgYW4gaXRlbSBmb3IgdGhlIG50aCB0aW1lLCB3ZSBjYW4gZ2V0IHRoZSBfc2FtZV8ga2V5LCBhbmQgbGV0XG4gKiBHbGltbWVyIGtub3cgdGhhdCBpdCBzaG91bGQgcmV1c2UgdGhlIERPTSBmb3IgdGhlIHByZXZpb3VzIG50aCBvY2N1cmVuY2UuXG4gKi9cbmZ1bmN0aW9uIHVuaXF1ZUtleUZvcihrZXlGb3I6IEtleUZvcikge1xuICBsZXQgc2VlbiA9IG5ldyBXZWFrTWFwV2l0aFByaW1pdGl2ZXM8bnVtYmVyPigpO1xuXG4gIHJldHVybiAodmFsdWU6IHVua25vd24sIG1lbW86IHVua25vd24pID0+IHtcbiAgICBsZXQga2V5ID0ga2V5Rm9yKHZhbHVlLCBtZW1vKTtcbiAgICBsZXQgY291bnQgPSBzZWVuLmdldChrZXkpIHx8IDA7XG5cbiAgICBzZWVuLnNldChrZXksIGNvdW50ICsgMSk7XG5cbiAgICBpZiAoY291bnQgPT09IDApIHtcbiAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlkZW50aXR5Rm9yTnRoT2NjdXJlbmNlKGtleSwgY291bnQpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSXRlcmF0b3JSZWYobGlzdFJlZjogUmVmZXJlbmNlLCBrZXk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQ29tcHV0ZVJlZigoKSA9PiB7XG4gICAgbGV0IGl0ZXJhYmxlID0gdmFsdWVGb3JSZWYobGlzdFJlZikgYXMgeyBbU3ltYm9sLml0ZXJhdG9yXTogYW55IH0gfCBudWxsIHwgZmFsc2U7XG5cbiAgICBsZXQga2V5Rm9yID0gbWFrZUtleUZvcihrZXkpO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlcmFibGUpKSB7XG4gICAgICByZXR1cm4gbmV3IEFycmF5SXRlcmF0b3IoaXRlcmFibGUsIGtleUZvcik7XG4gICAgfVxuXG4gICAgbGV0IG1heWJlSXRlcmF0b3IgPSB0b0l0ZXJhdG9yKGl0ZXJhYmxlKTtcblxuICAgIGlmIChtYXliZUl0ZXJhdG9yID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbmV3IEFycmF5SXRlcmF0b3IoRU1QVFlfQVJSQVksICgpID0+IG51bGwpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSXRlcmF0b3JXcmFwcGVyKG1heWJlSXRlcmF0b3IsIGtleUZvcik7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSXRlcmF0b3JJdGVtUmVmKF92YWx1ZTogdW5rbm93bikge1xuICBsZXQgdmFsdWUgPSBfdmFsdWU7XG4gIGxldCB0YWcgPSBjcmVhdGVUYWcoKTtcblxuICByZXR1cm4gY3JlYXRlQ29tcHV0ZVJlZihcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdW1lVGFnKHRhZyk7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgZGlydHlUYWcodGFnKTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG59XG5cbmNsYXNzIEl0ZXJhdG9yV3JhcHBlciBpbXBsZW1lbnRzIE9wYXF1ZUl0ZXJhdG9yIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbm5lcjogSXRlcmF0b3JEZWxlZ2F0ZSwgcHJpdmF0ZSBrZXlGb3I6IEtleUZvcikge31cblxuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmlzRW1wdHkoKTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgbGV0IG5leHRWYWx1ZSA9IHRoaXMuaW5uZXIubmV4dCgpIGFzIE9wYXF1ZUl0ZXJhdGlvbkl0ZW07XG5cbiAgICBpZiAobmV4dFZhbHVlICE9PSBudWxsKSB7XG4gICAgICBuZXh0VmFsdWUua2V5ID0gdGhpcy5rZXlGb3IobmV4dFZhbHVlLnZhbHVlLCBuZXh0VmFsdWUubWVtbyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRWYWx1ZTtcbiAgfVxufVxuXG5jbGFzcyBBcnJheUl0ZXJhdG9yIGltcGxlbWVudHMgT3BhcXVlSXRlcmF0b3Ige1xuICBwcml2YXRlIGN1cnJlbnQ6IHsga2luZDogJ2VtcHR5JyB9IHwgeyBraW5kOiAnZmlyc3QnOyB2YWx1ZTogdW5rbm93biB9IHwgeyBraW5kOiAncHJvZ3Jlc3MnIH07XG4gIHByaXZhdGUgcG9zID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGl0ZXJhdG9yOiB1bmtub3duW10gfCByZWFkb25seSB1bmtub3duW10sIHByaXZhdGUga2V5Rm9yOiBLZXlGb3IpIHtcbiAgICBpZiAoaXRlcmF0b3IubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmN1cnJlbnQgPSB7IGtpbmQ6ICdlbXB0eScgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50ID0geyBraW5kOiAnZmlyc3QnLCB2YWx1ZTogaXRlcmF0b3JbdGhpcy5wb3NdIH07XG4gICAgfVxuICB9XG5cbiAgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50LmtpbmQgPT09ICdlbXB0eSc7XG4gIH1cblxuICBuZXh0KCk6IE9wdGlvbjxJdGVyYXRpb25JdGVtPHVua25vd24sIG51bWJlcj4+IHtcbiAgICBsZXQgdmFsdWU6IHVua25vd247XG5cbiAgICBsZXQgY3VycmVudCA9IHRoaXMuY3VycmVudDtcbiAgICBpZiAoY3VycmVudC5raW5kID09PSAnZmlyc3QnKSB7XG4gICAgICB0aGlzLmN1cnJlbnQgPSB7IGtpbmQ6ICdwcm9ncmVzcycgfTtcbiAgICAgIHZhbHVlID0gY3VycmVudC52YWx1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucG9zID49IHRoaXMuaXRlcmF0b3IubGVuZ3RoIC0gMSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gdGhpcy5pdGVyYXRvclsrK3RoaXMucG9zXTtcbiAgICB9XG5cbiAgICBsZXQgeyBrZXlGb3IgfSA9IHRoaXM7XG5cbiAgICBsZXQga2V5ID0ga2V5Rm9yKHZhbHVlIGFzIERpY3QsIHRoaXMucG9zKTtcbiAgICBsZXQgbWVtbyA9IHRoaXMucG9zO1xuXG4gICAgcmV0dXJuIHsga2V5LCB2YWx1ZSwgbWVtbyB9O1xuICB9XG59XG4iXSwibmFtZXMiOlsic3ltYm9sIiwiSU5JVElBTCIsIkNPTlNUQU5UX1RBRyIsIkRFQlVHIiwidmFsaWRhdGVUYWciLCJ0cmFjayIsInZhbHVlRm9yVGFnIiwiY29uc3VtZVRhZyIsImlzRGljdCIsImdldFByb3AiLCJzZXRQcm9wIiwiY3JlYXRlRGVidWdBbGlhc1JlZiIsImdldFBhdGgiLCJpc09iamVjdCIsInRvSXRlcmF0b3IiLCJFTVBUWV9BUlJBWSIsImNyZWF0ZVRhZyIsImRpcnR5VGFnIl0sIm1hcHBpbmdzIjoiOztNQWVhLFNBQVMsR0FBa0JBLFdBQU0sQ0FBdkMsV0FBdUM7O01BdUI5QyxnQkFhRSx1QkFBQSxJQUFBLEVBQStCO0VBWHhCLE9BQUEsR0FBQSxHQUFBLElBQUE7RUFDQSxPQUFBLFlBQUEsR0FBQUMsaUJBQUE7RUFHQSxP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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xpbW1lci1yZWZlcmVuY2UuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3JlZmVyZW5jZS9saWIvcmVmZXJlbmNlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvcmVmZXJlbmNlL2xpYi9pdGVyYWJsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBnZXRQcm9wLCBzZXRQcm9wIH0gZnJvbSAnQGdsaW1tZXIvZ2xvYmFsLWNvbnRleHQnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBleHBlY3QsIGlzRGljdCwgc3ltYm9sIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDT05TVEFOVF9UQUcsXG4gIGNvbnN1bWVUYWcsXG4gIElOSVRJQUwsXG4gIFJldmlzaW9uLFxuICBUYWcsXG4gIHRyYWNrLFxuICB2YWxpZGF0ZVRhZyxcbiAgdmFsdWVGb3JUYWcsXG59IGZyb20gJ0BnbGltbWVyL3ZhbGlkYXRvcic7XG5cbmV4cG9ydCBjb25zdCBSRUZFUkVOQ0U6IHVuaXF1ZSBzeW1ib2wgPSBzeW1ib2woJ1JFRkVSRU5DRScpO1xuXG5jb25zdCBlbnVtIFJlZmVyZW5jZVR5cGUge1xuICBDb25zdGFudCxcbiAgQ29tcHV0ZSxcbiAgVW5ib3VuZCxcbiAgSW52b2thYmxlLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZTxfVCA9IHVua25vd24+IHtcbiAgW1JFRkVSRU5DRV06IFJlZmVyZW5jZVR5cGU7XG4gIGRlYnVnTGFiZWw/OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBudWxsIHwgTWFwPHN0cmluZyB8IFJlZmVyZW5jZSwgUmVmZXJlbmNlPjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVmZXJlbmNlO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJlbmNlRW52aXJvbm1lbnQge1xuICBnZXRQcm9wKG9iajogdW5rbm93biwgcGF0aDogc3RyaW5nKTogdW5rbm93bjtcbiAgc2V0UHJvcChvYmo6IHVua25vd24sIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB1bmtub3duO1xufVxuXG5jbGFzcyBSZWZlcmVuY2VJbXBsPFQgPSB1bmtub3duPiBpbXBsZW1lbnRzIFJlZmVyZW5jZSB7XG4gIFtSRUZFUkVOQ0VdOiBSZWZlcmVuY2VUeXBlO1xuICBwdWJsaWMgdGFnOiBPcHRpb248VGFnPiA9IG51bGw7XG4gIHB1YmxpYyBsYXN0UmV2aXNpb246IFJldmlzaW9uID0gSU5JVElBTDtcbiAgcHVibGljIGxhc3RWYWx1ZT86IFQ7XG5cbiAgcHVibGljIGNoaWxkcmVuOiBPcHRpb248TWFwPHN0cmluZyB8IFJlZmVyZW5jZSwgUmVmZXJlbmNlPj4gPSBudWxsO1xuXG4gIHB1YmxpYyBjb21wdXRlOiBPcHRpb248KCkgPT4gVD4gPSBudWxsO1xuICBwdWJsaWMgdXBkYXRlOiBPcHRpb248KHZhbDogVCkgPT4gdm9pZD4gPSBudWxsO1xuXG4gIHB1YmxpYyBkZWJ1Z0xhYmVsPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IFJlZmVyZW5jZVR5cGUpIHtcbiAgICB0aGlzW1JFRkVSRU5DRV0gPSB0eXBlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcmltaXRpdmVSZWYodmFsdWU6IHVua25vd24pOiBSZWZlcmVuY2Uge1xuICBsZXQgcmVmID0gbmV3IFJlZmVyZW5jZUltcGwoUmVmZXJlbmNlVHlwZS5VbmJvdW5kKTtcblxuICByZWYudGFnID0gQ09OU1RBTlRfVEFHO1xuICByZWYubGFzdFZhbHVlID0gdmFsdWU7XG5cbiAgaWYgKERFQlVHKSB7XG4gICAgcmVmLmRlYnVnTGFiZWwgPSBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGNvbnN0IFVOREVGSU5FRF9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYodW5kZWZpbmVkKTtcbmV4cG9ydCBjb25zdCBOVUxMX1JFRkVSRU5DRSA9IGNyZWF0ZVByaW1pdGl2ZVJlZihudWxsKTtcbmV4cG9ydCBjb25zdCBUUlVFX1JFRkVSRU5DRSA9IGNyZWF0ZVByaW1pdGl2ZVJlZih0cnVlKTtcbmV4cG9ydCBjb25zdCBGQUxTRV9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYoZmFsc2UpO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29uc3RSZWYodmFsdWU6IHVua25vd24sIGRlYnVnTGFiZWw6IGZhbHNlIHwgc3RyaW5nKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsKFJlZmVyZW5jZVR5cGUuQ29uc3RhbnQpO1xuXG4gIHJlZi5sYXN0VmFsdWUgPSB2YWx1ZTtcbiAgcmVmLnRhZyA9IENPTlNUQU5UX1RBRztcblxuICBpZiAoREVCVUcpIHtcbiAgICByZWYuZGVidWdMYWJlbCA9IGRlYnVnTGFiZWwgYXMgc3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVuYm91bmRSZWYodmFsdWU6IHVua25vd24sIGRlYnVnTGFiZWw6IGZhbHNlIHwgc3RyaW5nKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsKFJlZmVyZW5jZVR5cGUuVW5ib3VuZCk7XG5cbiAgcmVmLmxhc3RWYWx1ZSA9IHZhbHVlO1xuICByZWYudGFnID0gQ09OU1RBTlRfVEFHO1xuXG4gIGlmIChERUJVRykge1xuICAgIHJlZi5kZWJ1Z0xhYmVsID0gZGVidWdMYWJlbCBhcyBzdHJpbmc7XG4gIH1cblxuICByZXR1cm4gcmVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tcHV0ZVJlZjxUID0gdW5rbm93bj4oXG4gIGNvbXB1dGU6ICgpID0+IFQsXG4gIHVwZGF0ZTogT3B0aW9uPCh2YWx1ZTogVCkgPT4gdm9pZD4gPSBudWxsLFxuICBkZWJ1Z0xhYmVsOiBmYWxzZSB8IHN0cmluZyA9ICd1bmtub3duJ1xuKTogUmVmZXJlbmNlPFQ+IHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsPFQ+KFJlZmVyZW5jZVR5cGUuQ29tcHV0ZSk7XG5cbiAgcmVmLmNvbXB1dGUgPSBjb21wdXRlO1xuICByZWYudXBkYXRlID0gdXBkYXRlO1xuXG4gIGlmIChERUJVRykge1xuICAgIHJlZi5kZWJ1Z0xhYmVsID0gYChyZXN1bHQgb2YgYSBcXGAke2RlYnVnTGFiZWx9XFxgIGhlbHBlcilgO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlYWRPbmx5UmVmKHJlZjogUmVmZXJlbmNlKTogUmVmZXJlbmNlIHtcbiAgaWYgKCFpc1VwZGF0YWJsZVJlZihyZWYpKSByZXR1cm4gcmVmO1xuXG4gIHJldHVybiBjcmVhdGVDb21wdXRlUmVmKCgpID0+IHZhbHVlRm9yUmVmKHJlZiksIG51bGwsIHJlZi5kZWJ1Z0xhYmVsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW52b2thYmxlUmVmKHJlZjogUmVmZXJlbmNlKSB7XG4gIHJldHVybiByZWZbUkVGRVJFTkNFXSA9PT0gUmVmZXJlbmNlVHlwZS5JbnZva2FibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbnZva2FibGVSZWYoaW5uZXI6IFJlZmVyZW5jZSk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWYgPSBjcmVhdGVDb21wdXRlUmVmKFxuICAgICgpID0+IHZhbHVlRm9yUmVmKGlubmVyKSxcbiAgICAodmFsdWUpID0+IHVwZGF0ZVJlZihpbm5lciwgdmFsdWUpXG4gICk7XG4gIHJlZi5kZWJ1Z0xhYmVsID0gaW5uZXIuZGVidWdMYWJlbDtcbiAgcmVmW1JFRkVSRU5DRV0gPSBSZWZlcmVuY2VUeXBlLkludm9rYWJsZTtcblxuICByZXR1cm4gcmVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb25zdFJlZihfcmVmOiBSZWZlcmVuY2UpIHtcbiAgbGV0IHJlZiA9IF9yZWYgYXMgUmVmZXJlbmNlSW1wbDtcblxuICByZXR1cm4gcmVmLnRhZyA9PT0gQ09OU1RBTlRfVEFHO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVcGRhdGFibGVSZWYoX3JlZjogUmVmZXJlbmNlKSB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw7XG5cbiAgcmV0dXJuIHJlZi51cGRhdGUgIT09IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUZvclJlZjxUPihfcmVmOiBSZWZlcmVuY2U8VD4pOiBUIHtcbiAgbGV0IHJlZiA9IF9yZWYgYXMgUmVmZXJlbmNlSW1wbDxUPjtcblxuICBsZXQgeyB0YWcgfSA9IHJlZjtcblxuICBpZiAodGFnID09PSBDT05TVEFOVF9UQUcpIHtcbiAgICByZXR1cm4gcmVmLmxhc3RWYWx1ZSBhcyBUO1xuICB9XG5cbiAgbGV0IHsgbGFzdFJldmlzaW9uIH0gPSByZWY7XG4gIGxldCBsYXN0VmFsdWU7XG5cbiAgaWYgKHRhZyA9PT0gbnVsbCB8fCAhdmFsaWRhdGVUYWcodGFnLCBsYXN0UmV2aXNpb24pKSB7XG4gICAgbGV0IHsgY29tcHV0ZSB9ID0gcmVmO1xuXG4gICAgdGFnID0gcmVmLnRhZyA9IHRyYWNrKCgpID0+IHtcbiAgICAgIGxhc3RWYWx1ZSA9IHJlZi5sYXN0VmFsdWUgPSBjb21wdXRlISgpO1xuICAgIH0sIERFQlVHICYmIHJlZi5kZWJ1Z0xhYmVsKTtcblxuICAgIHJlZi5sYXN0UmV2aXNpb24gPSB2YWx1ZUZvclRhZyh0YWcpO1xuICB9IGVsc2Uge1xuICAgIGxhc3RWYWx1ZSA9IHJlZi5sYXN0VmFsdWU7XG4gIH1cblxuICBjb25zdW1lVGFnKHRhZyk7XG5cbiAgcmV0dXJuIGxhc3RWYWx1ZSBhcyBUO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlUmVmKF9yZWY6IFJlZmVyZW5jZSwgdmFsdWU6IHVua25vd24pIHtcbiAgbGV0IHJlZiA9IF9yZWYgYXMgUmVmZXJlbmNlSW1wbDtcblxuICBsZXQgdXBkYXRlID0gZXhwZWN0KHJlZi51cGRhdGUsICdjYWxsZWQgdXBkYXRlIG9uIGEgbm9uLXVwZGF0YWJsZSByZWZlcmVuY2UnKTtcblxuICB1cGRhdGUodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hpbGRSZWZGb3IoX3BhcmVudFJlZjogUmVmZXJlbmNlLCBwYXRoOiBzdHJpbmcpOiBSZWZlcmVuY2Uge1xuICBsZXQgcGFyZW50UmVmID0gX3BhcmVudFJlZiBhcyBSZWZlcmVuY2VJbXBsO1xuXG4gIGxldCB0eXBlID0gcGFyZW50UmVmW1JFRkVSRU5DRV07XG5cbiAgbGV0IGNoaWxkcmVuID0gcGFyZW50UmVmLmNoaWxkcmVuO1xuICBsZXQgY2hpbGQ6IFJlZmVyZW5jZTtcblxuICBpZiAoY2hpbGRyZW4gPT09IG51bGwpIHtcbiAgICBjaGlsZHJlbiA9IHBhcmVudFJlZi5jaGlsZHJlbiA9IG5ldyBNYXAoKTtcbiAgfSBlbHNlIHtcbiAgICBjaGlsZCA9IGNoaWxkcmVuLmdldChwYXRoKSE7XG5cbiAgICBpZiAoY2hpbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlID09PSBSZWZlcmVuY2VUeXBlLlVuYm91bmQpIHtcbiAgICBsZXQgcGFyZW50ID0gdmFsdWVGb3JSZWYocGFyZW50UmVmKTtcblxuICAgIGlmIChpc0RpY3QocGFyZW50KSkge1xuICAgICAgY2hpbGQgPSBjcmVhdGVVbmJvdW5kUmVmKFxuICAgICAgICAocGFyZW50IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtwYXRoXSxcbiAgICAgICAgREVCVUcgJiYgYCR7cGFyZW50UmVmLmRlYnVnTGFiZWx9LiR7cGF0aH1gXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGlsZCA9IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNoaWxkID0gY3JlYXRlQ29tcHV0ZVJlZihcbiAgICAgICgpID0+IHtcbiAgICAgICAgbGV0IHBhcmVudCA9IHZhbHVlRm9yUmVmKHBhcmVudFJlZik7XG5cbiAgICAgICAgaWYgKGlzRGljdChwYXJlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIGdldFByb3AocGFyZW50LCBwYXRoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICh2YWwpID0+IHtcbiAgICAgICAgbGV0IHBhcmVudCA9IHZhbHVlRm9yUmVmKHBhcmVudFJlZik7XG5cbiAgICAgICAgaWYgKGlzRGljdChwYXJlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIHNldFByb3AocGFyZW50LCBwYXRoLCB2YWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcblxuICAgIGlmIChERUJVRykge1xuICAgICAgY2hpbGQuZGVidWdMYWJlbCA9IGAke3BhcmVudFJlZi5kZWJ1Z0xhYmVsfS4ke3BhdGh9YDtcbiAgICB9XG4gIH1cblxuICBjaGlsZHJlbi5zZXQocGF0aCwgY2hpbGQpO1xuXG4gIHJldHVybiBjaGlsZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoaWxkUmVmRnJvbVBhcnRzKHJvb3Q6IFJlZmVyZW5jZSwgcGFydHM6IHN0cmluZ1tdKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZmVyZW5jZSA9IHJvb3Q7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIHJlZmVyZW5jZSA9IGNoaWxkUmVmRm9yKHJlZmVyZW5jZSwgcGFydHNbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGxldCBjcmVhdGVEZWJ1Z0FsaWFzUmVmOiB1bmRlZmluZWQgfCAoKGRlYnVnTGFiZWw6IHN0cmluZywgaW5uZXI6IFJlZmVyZW5jZSkgPT4gUmVmZXJlbmNlKTtcblxuaWYgKERFQlVHKSB7XG4gIGNyZWF0ZURlYnVnQWxpYXNSZWYgPSAoZGVidWdMYWJlbDogc3RyaW5nLCBpbm5lcjogUmVmZXJlbmNlKSA9PiB7XG4gICAgbGV0IHVwZGF0ZSA9IGlzVXBkYXRhYmxlUmVmKGlubmVyKSA/ICh2YWx1ZTogdW5rbm93bikgPT4gdXBkYXRlUmVmKGlubmVyLCB2YWx1ZSkgOiBudWxsO1xuICAgIGxldCByZWYgPSBjcmVhdGVDb21wdXRlUmVmKCgpID0+IHZhbHVlRm9yUmVmKGlubmVyKSwgdXBkYXRlKTtcblxuICAgIHJlZltSRUZFUkVOQ0VdID0gaW5uZXJbUkVGRVJFTkNFXTtcblxuICAgIHJlZi5kZWJ1Z0xhYmVsID0gZGVidWdMYWJlbDtcblxuICAgIHJldHVybiByZWY7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBnZXRQYXRoLCB0b0l0ZXJhdG9yIH0gZnJvbSAnQGdsaW1tZXIvZ2xvYmFsLWNvbnRleHQnO1xuaW1wb3J0IHsgT3B0aW9uLCBEaWN0IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBFTVBUWV9BUlJBWSwgaXNPYmplY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7IGNyZWF0ZVRhZywgY29uc3VtZVRhZywgZGlydHlUYWcgfSBmcm9tICdAZ2xpbW1lci92YWxpZGF0b3InO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCBSZWZlcmVuY2VFbnZpcm9ubWVudCwgdmFsdWVGb3JSZWYsIGNyZWF0ZUNvbXB1dGVSZWYgfSBmcm9tICcuL3JlZmVyZW5jZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlcmF0aW9uSXRlbTxULCBVPiB7XG4gIGtleTogdW5rbm93bjtcbiAgdmFsdWU6IFQ7XG4gIG1lbW86IFU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWJzdHJhY3RJdGVyYXRvcjxULCBVLCBWIGV4dGVuZHMgSXRlcmF0aW9uSXRlbTxULCBVPj4ge1xuICBpc0VtcHR5KCk6IGJvb2xlYW47XG4gIG5leHQoKTogT3B0aW9uPFY+O1xufVxuXG5leHBvcnQgdHlwZSBPcGFxdWVJdGVyYXRpb25JdGVtID0gSXRlcmF0aW9uSXRlbTx1bmtub3duLCB1bmtub3duPjtcbmV4cG9ydCB0eXBlIE9wYXF1ZUl0ZXJhdG9yID0gQWJzdHJhY3RJdGVyYXRvcjx1bmtub3duLCB1bmtub3duLCBPcGFxdWVJdGVyYXRpb25JdGVtPjtcblxuZXhwb3J0IGludGVyZmFjZSBJdGVyYXRvckRlbGVnYXRlIHtcbiAgaXNFbXB0eSgpOiBib29sZWFuO1xuICBuZXh0KCk6IHsgdmFsdWU6IHVua25vd247IG1lbW86IHVua25vd24gfSB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlcmF0b3JSZWZlcmVuY2VFbnZpcm9ubWVudCBleHRlbmRzIFJlZmVyZW5jZUVudmlyb25tZW50IHtcbiAgZ2V0UGF0aChvYmo6IHVua25vd24sIHBhdGg6IHN0cmluZyk6IHVua25vd247XG4gIHRvSXRlcmF0b3Iob2JqOiB1bmtub3duKTogT3B0aW9uPEl0ZXJhdG9yRGVsZWdhdGU+O1xufVxuXG50eXBlIEtleUZvciA9IChpdGVtOiB1bmtub3duLCBpbmRleDogdW5rbm93bikgPT4gdW5rbm93bjtcblxuY29uc3QgTlVMTF9JREVOVElUWSA9IHt9O1xuXG5jb25zdCBLRVk6IEtleUZvciA9IChfLCBpbmRleCkgPT4gaW5kZXg7XG5jb25zdCBJTkRFWDogS2V5Rm9yID0gKF8sIGluZGV4KSA9PiBTdHJpbmcoaW5kZXgpO1xuY29uc3QgSURFTlRJVFk6IEtleUZvciA9IChpdGVtKSA9PiB7XG4gIGlmIChpdGVtID09PSBudWxsKSB7XG4gICAgLy8gUmV0dXJuaW5nIG51bGwgYXMgYW4gaWRlbnRpdHkgd2lsbCBjYXVzZSBmYWlsdXJlcyBzaW5jZSB0aGUgaXRlcmF0b3JcbiAgICAvLyBjYW4ndCB0ZWxsIHRoYXQgaXQncyBhY3R1YWxseSBzdXBwb3NlZCB0byBiZSBudWxsXG4gICAgcmV0dXJuIE5VTExfSURFTlRJVFk7XG4gIH1cblxuICByZXR1cm4gaXRlbTtcbn07XG5cbmZ1bmN0aW9uIGtleUZvclBhdGgocGF0aDogc3RyaW5nKTogS2V5Rm9yIHtcbiAgaWYgKERFQlVHICYmIHBhdGhbMF0gPT09ICdAJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBrZXlwYXRoOiAnJHtwYXRofScsIHZhbGlkIGtleXM6IEBpbmRleCwgQGlkZW50aXR5LCBvciBhIHBhdGhgKTtcbiAgfVxuICByZXR1cm4gdW5pcXVlS2V5Rm9yKChpdGVtKSA9PiBnZXRQYXRoKGl0ZW0gYXMgb2JqZWN0LCBwYXRoKSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VLZXlGb3Ioa2V5OiBzdHJpbmcpIHtcbiAgc3dpdGNoIChrZXkpIHtcbiAgICBjYXNlICdAa2V5JzpcbiAgICAgIHJldHVybiB1bmlxdWVLZXlGb3IoS0VZKTtcbiAgICBjYXNlICdAaW5kZXgnOlxuICAgICAgcmV0dXJuIHVuaXF1ZUtleUZvcihJTkRFWCk7XG4gICAgY2FzZSAnQGlkZW50aXR5JzpcbiAgICAgIHJldHVybiB1bmlxdWVLZXlGb3IoSURFTlRJVFkpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ga2V5Rm9yUGF0aChrZXkpO1xuICB9XG59XG5cbmNsYXNzIFdlYWtNYXBXaXRoUHJpbWl0aXZlczxUPiB7XG4gIHByaXZhdGUgX3dlYWtNYXA/OiBXZWFrTWFwPG9iamVjdCwgVD47XG4gIHByaXZhdGUgX3ByaW1pdGl2ZU1hcD86IE1hcDx1bmtub3duLCBUPjtcblxuICBwcml2YXRlIGdldCB3ZWFrTWFwKCkge1xuICAgIGlmICh0aGlzLl93ZWFrTWFwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3dlYWtNYXAgPSBuZXcgV2Vha01hcCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl93ZWFrTWFwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcHJpbWl0aXZlTWFwKCkge1xuICAgIGlmICh0aGlzLl9wcmltaXRpdmVNYXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcHJpbWl0aXZlTWFwID0gbmV3IE1hcCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wcmltaXRpdmVNYXA7XG4gIH1cblxuICBzZXQoa2V5OiB1bmtub3duLCB2YWx1ZTogVCkge1xuICAgIGlmIChpc09iamVjdChrZXkpKSB7XG4gICAgICB0aGlzLndlYWtNYXAuc2V0KGtleSBhcyBvYmplY3QsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmltaXRpdmVNYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldChrZXk6IHVua25vd24pOiBUIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoaXNPYmplY3Qoa2V5KSkge1xuICAgICAgcmV0dXJuIHRoaXMud2Vha01hcC5nZXQoa2V5IGFzIG9iamVjdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnByaW1pdGl2ZU1hcC5nZXQoa2V5KTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgSURFTlRJVElFUyA9IG5ldyBXZWFrTWFwV2l0aFByaW1pdGl2ZXM8b2JqZWN0W10+KCk7XG5cbmZ1bmN0aW9uIGlkZW50aXR5Rm9yTnRoT2NjdXJlbmNlKHZhbHVlOiBhbnksIGNvdW50OiBudW1iZXIpIHtcbiAgbGV0IGlkZW50aXRpZXMgPSBJREVOVElUSUVTLmdldCh2YWx1ZSk7XG5cbiAgaWYgKGlkZW50aXRpZXMgPT09IHVuZGVmaW5lZCkge1xuICAgIGlkZW50aXRpZXMgPSBbXTtcbiAgICBJREVOVElUSUVTLnNldCh2YWx1ZSwgaWRlbnRpdGllcyk7XG4gIH1cblxuICBsZXQgaWRlbnRpdHkgPSBpZGVudGl0aWVzW2NvdW50XTtcblxuICBpZiAoaWRlbnRpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgIGlkZW50aXR5ID0geyB2YWx1ZSwgY291bnQgfTtcbiAgICBpZGVudGl0aWVzW2NvdW50XSA9IGlkZW50aXR5O1xuICB9XG5cbiAgcmV0dXJuIGlkZW50aXR5O1xufVxuXG4vKipcbiAqIFdoZW4gaXRlcmF0aW5nIG92ZXIgYSBsaXN0LCBpdCdzIHBvc3NpYmxlIHRoYXQgYW4gaXRlbSB3aXRoIHRoZSBzYW1lIHVuaXF1ZVxuICoga2V5IGNvdWxkIGJlIGVuY291bnRlcmVkIHR3aWNlOlxuICpcbiAqIGBgYGpzXG4gKiBsZXQgYXJyID0gWydzYW1lJywgJ2RpZmZlcmVudCcsICdzYW1lJywgJ3NhbWUnXTtcbiAqIGBgYFxuICpcbiAqIEluIGdlbmVyYWwsIHdlIHdhbnQgdG8gdHJlYXQgdGhlc2UgaXRlbXMgYXMgX3VuaXF1ZSB3aXRoaW4gdGhlIGxpc3RfLiBUbyBkb1xuICogdGhpcywgd2UgdHJhY2sgdGhlIG9jY3VyZW5jZXMgb2YgZXZlcnkgaXRlbSBhcyB3ZSBpdGVyYXRlIHRoZSBsaXN0LCBhbmQgd2hlblxuICogYW4gaXRlbSBvY2N1cnMgbW9yZSB0aGFuIG9uY2UsIHdlIGdlbmVyYXRlIGEgbmV3IHVuaXF1ZSBrZXkganVzdCBmb3IgdGhhdFxuICogaXRlbSwgYW5kIHRoYXQgb2NjdXJlbmNlIHdpdGhpbiB0aGUgbGlzdC4gVGhlIG5leHQgdGltZSB3ZSBpdGVyYXRlIHRoZSBsaXN0LFxuICogYW5kIGVuY291bnRlciBhbiBpdGVtIGZvciB0aGUgbnRoIHRpbWUsIHdlIGNhbiBnZXQgdGhlIF9zYW1lXyBrZXksIGFuZCBsZXRcbiAqIEdsaW1tZXIga25vdyB0aGF0IGl0IHNob3VsZCByZXVzZSB0aGUgRE9NIGZvciB0aGUgcHJldmlvdXMgbnRoIG9jY3VyZW5jZS5cbiAqL1xuZnVuY3Rpb24gdW5pcXVlS2V5Rm9yKGtleUZvcjogS2V5Rm9yKSB7XG4gIGxldCBzZWVuID0gbmV3IFdlYWtNYXBXaXRoUHJpbWl0aXZlczxudW1iZXI+KCk7XG5cbiAgcmV0dXJuICh2YWx1ZTogdW5rbm93biwgbWVtbzogdW5rbm93bikgPT4ge1xuICAgIGxldCBrZXkgPSBrZXlGb3IodmFsdWUsIG1lbW8pO1xuICAgIGxldCBjb3VudCA9IHNlZW4uZ2V0KGtleSkgfHwgMDtcblxuICAgIHNlZW4uc2V0KGtleSwgY291bnQgKyAxKTtcblxuICAgIGlmIChjb3VudCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG5cbiAgICByZXR1cm4gaWRlbnRpdHlGb3JOdGhPY2N1cmVuY2Uoa2V5LCBjb3VudCk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJdGVyYXRvclJlZihsaXN0UmVmOiBSZWZlcmVuY2UsIGtleTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVDb21wdXRlUmVmKCgpID0+IHtcbiAgICBsZXQgaXRlcmFibGUgPSB2YWx1ZUZvclJlZihsaXN0UmVmKSBhcyB7IFtTeW1ib2wuaXRlcmF0b3JdOiBhbnkgfSB8IG51bGwgfCBmYWxzZTtcblxuICAgIGxldCBrZXlGb3IgPSBtYWtlS2V5Rm9yKGtleSk7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVyYWJsZSkpIHtcbiAgICAgIHJldHVybiBuZXcgQXJyYXlJdGVyYXRvcihpdGVyYWJsZSwga2V5Rm9yKTtcbiAgICB9XG5cbiAgICBsZXQgbWF5YmVJdGVyYXRvciA9IHRvSXRlcmF0b3IoaXRlcmFibGUpO1xuXG4gICAgaWYgKG1heWJlSXRlcmF0b3IgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBuZXcgQXJyYXlJdGVyYXRvcihFTVBUWV9BUlJBWSwgKCkgPT4gbnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJdGVyYXRvcldyYXBwZXIobWF5YmVJdGVyYXRvciwga2V5Rm9yKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJdGVyYXRvckl0ZW1SZWYoX3ZhbHVlOiB1bmtub3duKSB7XG4gIGxldCB2YWx1ZSA9IF92YWx1ZTtcbiAgbGV0IHRhZyA9IGNyZWF0ZVRhZygpO1xuXG4gIHJldHVybiBjcmVhdGVDb21wdXRlUmVmKFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN1bWVUYWcodGFnKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKHZhbHVlICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICB2YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICBkaXJ0eVRhZyh0YWcpO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbn1cblxuY2xhc3MgSXRlcmF0b3JXcmFwcGVyIGltcGxlbWVudHMgT3BhcXVlSXRlcmF0b3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlubmVyOiBJdGVyYXRvckRlbGVnYXRlLCBwcml2YXRlIGtleUZvcjogS2V5Rm9yKSB7fVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuaXNFbXB0eSgpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICBsZXQgbmV4dFZhbHVlID0gdGhpcy5pbm5lci5uZXh0KCkgYXMgT3BhcXVlSXRlcmF0aW9uSXRlbTtcblxuICAgIGlmIChuZXh0VmFsdWUgIT09IG51bGwpIHtcbiAgICAgIG5leHRWYWx1ZS5rZXkgPSB0aGlzLmtleUZvcihuZXh0VmFsdWUudmFsdWUsIG5leHRWYWx1ZS5tZW1vKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dFZhbHVlO1xuICB9XG59XG5cbmNsYXNzIEFycmF5SXRlcmF0b3IgaW1wbGVtZW50cyBPcGFxdWVJdGVyYXRvciB7XG4gIHByaXZhdGUgY3VycmVudDogeyBraW5kOiAnZW1wdHknIH0gfCB7IGtpbmQ6ICdmaXJzdCc7IHZhbHVlOiB1bmtub3duIH0gfCB7IGtpbmQ6ICdwcm9ncmVzcycgfTtcbiAgcHJpdmF0ZSBwb3MgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaXRlcmF0b3I6IHVua25vd25bXSB8IHJlYWRvbmx5IHVua25vd25bXSwgcHJpdmF0ZSBrZXlGb3I6IEtleUZvcikge1xuICAgIGlmIChpdGVyYXRvci5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY3VycmVudCA9IHsga2luZDogJ2VtcHR5JyB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnQgPSB7IGtpbmQ6ICdmaXJzdCcsIHZhbHVlOiBpdGVyYXRvclt0aGlzLnBvc10gfTtcbiAgICB9XG4gIH1cblxuICBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnQua2luZCA9PT0gJ2VtcHR5JztcbiAgfVxuXG4gIG5leHQoKTogT3B0aW9uPEl0ZXJhdGlvbkl0ZW08dW5rbm93biwgbnVtYmVyPj4ge1xuICAgIGxldCB2YWx1ZTogdW5rbm93bjtcblxuICAgIGxldCBjdXJyZW50ID0gdGhpcy5jdXJyZW50O1xuICAgIGlmIChjdXJyZW50LmtpbmQgPT09ICdmaXJzdCcpIHtcbiAgICAgIHRoaXMuY3VycmVudCA9IHsga2luZDogJ3Byb2dyZXNzJyB9O1xuICAgICAgdmFsdWUgPSBjdXJyZW50LnZhbHVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wb3MgPj0gdGhpcy5pdGVyYXRvci5sZW5ndGggLSAxKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSB0aGlzLml0ZXJhdG9yWysrdGhpcy5wb3NdO1xuICAgIH1cblxuICAgIGxldCB7IGtleUZvciB9ID0gdGhpcztcblxuICAgIGxldCBrZXkgPSBrZXlGb3IodmFsdWUgYXMgRGljdCwgdGhpcy5wb3MpO1xuICAgIGxldCBtZW1vID0gdGhpcy5wb3M7XG5cbiAgICByZXR1cm4geyBrZXksIHZhbHVlLCBtZW1vIH07XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJzeW1ib2wiLCJJTklUSUFMIiwiQ09OU1RBTlRfVEFHIiwiREVCVUciLCJ2YWxpZGF0ZVRhZyIsInRyYWNrIiwidmFsdWVGb3JUYWciLCJjb25zdW1lVGFnIiwiaXNEaWN0IiwiZ2V0UHJvcCIsInNldFByb3AiLCJjcmVhdGVEZWJ1Z0FsaWFzUmVmIiwiZ2V0UGF0aCIsImlzT2JqZWN0IiwidG9JdGVyYXRvciIsIkVNUFRZX0FSUkFZIiwiY3JlYXRlVGFnIiwiZGlydHlUYWciXSwibWFwcGluZ3MiOiI7O01BZWEsU0FBUyxHQUFrQkEsV0FBTSxDQUF2QyxXQUF1Qzs7TUF3QjlDLGdCQWFFLHVCQUFBLElBQUEsRUFBK0I7RUFY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

@@ -248,2 +248,2 @@ "use strict";

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3JlZmVyZW5jZS9saWIvcmVmZXJlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBV08sTUFBTSxTQUFTLEdBQWtCLGtCQUFqQyxXQUFpQyxDQUFqQzs7O0FBdUJQLE1BQUEsYUFBQSxDQUFtQjtBQWFqQixFQUFBLFdBQUEsQ0FBQSxJQUFBLEVBQStCO0FBWHhCLFNBQUEsR0FBQSxHQUFBLElBQUE7QUFDQSxTQUFBLFlBQUEsR0FBQSxrQkFBQTtBQUdBLFNBQUEsUUFBQSxHQUFBLElBQUE7QUFFQSxTQUFBLE9BQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxNQUFBLEdBQUEsSUFBQTtBQUtMLFNBQUEsU0FBQSxJQUFBLElBQUE7QUFDRDs7QUFmZ0I7O0FBa0JiLFNBQUEsa0JBQUEsQ0FBQSxLQUFBLEVBQTJDO0FBQy9DLE1BQUksR0FBRyxHQUFHLElBQUEsYUFBQSxDQUFpQjtBQUFBO0FBQWpCLEdBQVY7QUFFQSxFQUFBLEdBQUcsQ0FBSCxHQUFBLEdBQUEsdUJBQUE7QUFDQSxFQUFBLEdBQUcsQ0FBSCxTQUFBLEdBQUEsS0FBQTs7QUFFQSxNQUFBLFVBQUEsRUFBVztBQUNULElBQUEsR0FBRyxDQUFILFVBQUEsR0FBaUIsTUFBTSxDQUF2QixLQUF1QixDQUF2QjtBQUNEOztBQUVELFNBQUEsR0FBQTtBQUNEOztBQUVNLE1BQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQTlDLFNBQThDLENBQTlDOztBQUNBLE1BQU0sY0FBYyxHQUFHLGtCQUFrQixDQUF6QyxJQUF5QyxDQUF6Qzs7QUFDQSxNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBekMsSUFBeUMsQ0FBekM7O0FBQ0EsTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQTFDLEtBQTBDLENBQTFDOzs7QUFFRCxTQUFBLGNBQUEsQ0FBQSxLQUFBLEVBQUEsVUFBQSxFQUFtRTtB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RCxTQUFBLFNBQUE7QUFDRDs7QUFFTSxJQUFBLG1CQUFBOzs7QUFFUCxJQUFBLFVBQUEsRUFBVztBQUNULGdDQUFBLG1CQUFtQixHQUFHLENBQUEsVUFBQSxFQUFBLEtBQUEsS0FBeUM7QUFDN0QsUUFBSSxNQUFNLEdBQUcsY0FBYyxDQUFkLEtBQWMsQ0FBZCxHQUF5QixLQUFELElBQW9CLFNBQVMsQ0FBQSxLQUFBLEVBQXJELEtBQXFELENBQXJELEdBQWIsSUFBQTtBQUNBLFFBQUksR0FBRyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sV0FBVyxDQUFsQixLQUFrQixDQUFsQixFQUExQixNQUEwQixDQUExQjtBQUVBLElBQUEsR0FBRyxDQUFILFNBQUcsQ0FBSCxHQUFpQixLQUFLLENBQXRCLFNBQXNCLENBQXRCO0FBRUEsSUFBQSxHQUFHLENBQUgsVUFBQSxHQUFBLFVBQUE7QUFFQSxXQUFBLEdBQUE7QUFSRixHQUFBO0FBVUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBnZXRQcm9wLCBzZXRQcm9wIH0gZnJvbSAnQGdsaW1tZXIvZ2xvYmFsLWNvbnRleHQnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBleHBlY3QsIGlzRGljdCwgc3ltYm9sIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDT05TVEFOVF9UQUcsXG4gIGNvbnN1bWVUYWcsXG4gIElOSVRJQUwsXG4gIFJldmlzaW9uLFxuICBUYWcsXG4gIHRyYWNrLFxuICB2YWxpZGF0ZVRhZyxcbiAgdmFsdWVGb3JUYWcsXG59IGZyb20gJ0BnbGltbWVyL3ZhbGlkYXRvcic7XG5cbmV4cG9ydCBjb25zdCBSRUZFUkVOQ0U6IHVuaXF1ZSBzeW1ib2wgPSBzeW1ib2woJ1JFRkVSRU5DRScpO1xuXG5jb25zdCBlbnVtIFJlZmVyZW5jZVR5cGUge1xuICBDb25zdGFudCxcbiAgQ29tcHV0ZSxcbiAgVW5ib3VuZCxcbiAgSW52b2thYmxlLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZTxfVCA9IHVua25vd24+IHtcbiAgW1JFRkVSRU5DRV06IFJlZmVyZW5jZVR5cGU7XG4gIGRlYnVnTGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlZmVyZW5jZTtcblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZUVudmlyb25tZW50IHtcbiAgZ2V0UHJvcChvYmo6IHVua25vd24sIHBhdGg6IHN0cmluZyk6IHVua25vd247XG4gIHNldFByb3Aob2JqOiB1bmtub3duLCBwYXRoOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdW5rbm93bjtcbn1cblxuY2xhc3MgUmVmZXJlbmNlSW1wbDxUID0gdW5rbm93bj4gaW1wbGVtZW50cyBSZWZlcmVuY2Uge1xuICBbUkVGRVJFTkNFXTogUmVmZXJlbmNlVHlwZTtcbiAgcHVibGljIHRhZzogT3B0aW9uPFRhZz4gPSBudWxsO1xuICBwdWJsaWMgbGFzdFJldmlzaW9uOiBSZXZpc2lvbiA9IElOSVRJQUw7XG4gIHB1YmxpYyBsYXN0VmFsdWU/OiBUO1xuXG4gIHB1YmxpYyBjaGlsZHJlbjogT3B0aW9uPE1hcDxzdHJpbmcgfCBSZWZlcmVuY2UsIFJlZmVyZW5jZT4+ID0gbnVsbDtcblxuICBwdWJsaWMgY29tcHV0ZTogT3B0aW9uPCgpID0+IFQ+ID0gbnVsbDtcbiAgcHVibGljIHVwZGF0ZTogT3B0aW9uPCh2YWw6IFQpID0+IHZvaWQ+ID0gbnVsbDtcblxuICBwdWJsaWMgZGVidWdMYWJlbD86IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih0eXBlOiBSZWZlcmVuY2VUeXBlKSB7XG4gICAgdGhpc1tSRUZFUkVOQ0VdID0gdHlwZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJpbWl0aXZlUmVmKHZhbHVlOiB1bmtub3duKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsKFJlZmVyZW5jZVR5cGUuVW5ib3VuZCk7XG5cbiAgcmVmLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgcmVmLmxhc3RWYWx1ZSA9IHZhbHVlO1xuXG4gIGlmIChERUJVRykge1xuICAgIHJlZi5kZWJ1Z0xhYmVsID0gU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBjb25zdCBVTkRFRklORURfUkVGRVJFTkNFID0gY3JlYXRlUHJpbWl0aXZlUmVmKHVuZGVmaW5lZCk7XG5leHBvcnQgY29uc3QgTlVMTF9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYobnVsbCk7XG5leHBvcnQgY29uc3QgVFJVRV9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYodHJ1ZSk7XG5leHBvcnQgY29uc3QgRkFMU0VfUkVGRVJFTkNFID0gY3JlYXRlUHJpbWl0aXZlUmVmKGZhbHNlKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnN0UmVmKHZhbHVlOiB1bmtub3duLCBkZWJ1Z0xhYmVsOiBmYWxzZSB8IHN0cmluZyk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWYgPSBuZXcgUmVmZXJlbmNlSW1wbChSZWZlcmVuY2VUeXBlLkNvbnN0YW50KTtcblxuICByZWYubGFzdFZhbHVlID0gdmFsdWU7XG4gIHJlZi50YWcgPSBDT05TVEFOVF9UQUc7XG5cbiAgaWYgKERFQlVHKSB7XG4gICAgcmVmLmRlYnVnTGFiZWwgPSBkZWJ1Z0xhYmVsIGFzIHN0cmluZztcbiAgfVxuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVbmJvdW5kUmVmKHZhbHVlOiB1bmtub3duLCBkZWJ1Z0xhYmVsOiBmYWxzZSB8IHN0cmluZyk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWYgPSBuZXcgUmVmZXJlbmNlSW1wbChSZWZlcmVuY2VUeXBlLlVuYm91bmQpO1xuXG4gIHJlZi5sYXN0VmFsdWUgPSB2YWx1ZTtcbiAgcmVmLnRhZyA9IENPTlNUQU5UX1RBRztcblxuICBpZiAoREVCVUcpIHtcbiAgICByZWYuZGVidWdMYWJlbCA9IGRlYnVnTGFiZWwgYXMgc3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbXB1dGVSZWY8VCA9IHVua25vd24+KFxuICBjb21wdXRlOiAoKSA9PiBULFxuICB1cGRhdGU6IE9wdGlvbjwodmFsdWU6IFQpID0+IHZvaWQ+ID0gbnVsbCxcbiAgZGVidWdMYWJlbDogZmFsc2UgfCBzdHJpbmcgPSAndW5rbm93bidcbik6IFJlZmVyZW5jZTxUPiB7XG4gIGxldCByZWYgPSBuZXcgUmVmZXJlbmNlSW1wbDxUPihSZWZlcmVuY2VUeXBlLkNvbXB1dGUpO1xuXG4gIHJlZi5jb21wdXRlID0gY29tcHV0ZTtcbiAgcmVmLnVwZGF0ZSA9IHVwZGF0ZTtcblxuICBpZiAoREVCVUcpIHtcbiAgICByZWYuZGVidWdMYWJlbCA9IGAocmVzdWx0IG9mIGEgXFxgJHtkZWJ1Z0xhYmVsfVxcYCBoZWxwZXIpYDtcbiAgfVxuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWFkT25seVJlZihyZWY6IFJlZmVyZW5jZSk6IFJlZmVyZW5jZSB7XG4gIGlmICghaXNVcGRhdGFibGVSZWYocmVmKSkgcmV0dXJuIHJlZjtcblxuICByZXR1cm4gY3JlYXRlQ29tcHV0ZVJlZigoKSA9PiB2YWx1ZUZvclJlZihyZWYpLCBudWxsLCByZWYuZGVidWdMYWJlbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ludm9rYWJsZVJlZihyZWY6IFJlZmVyZW5jZSkge1xuICByZXR1cm4gcmVmW1JFRkVSRU5DRV0gPT09IFJlZmVyZW5jZVR5cGUuSW52b2thYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW52b2thYmxlUmVmKGlubmVyOiBSZWZlcmVuY2UpOiBSZWZlcmVuY2Uge1xuICBsZXQgcmVmID0gY3JlYXRlQ29tcHV0ZVJlZihcbiAgICAoKSA9PiB2YWx1ZUZvclJlZihpbm5lciksXG4gICAgKHZhbHVlKSA9PiB1cGRhdGVSZWYoaW5uZXIsIHZhbHVlKVxuICApO1xuICByZWYuZGVidWdMYWJlbCA9IGlubmVyLmRlYnVnTGFiZWw7XG4gIHJlZltSRUZFUkVOQ0VdID0gUmVmZXJlbmNlVHlwZS5JbnZva2FibGU7XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uc3RSZWYoX3JlZjogUmVmZXJlbmNlKSB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw7XG5cbiAgcmV0dXJuIHJlZi50YWcgPT09IENPTlNUQU5UX1RBRztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXBkYXRhYmxlUmVmKF9yZWY6IFJlZmVyZW5jZSkge1xuICBsZXQgcmVmID0gX3JlZiBhcyBSZWZlcmVuY2VJbXBsO1xuXG4gIHJldHVybiByZWYudXBkYXRlICE9PSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGb3JSZWY8VD4oX3JlZjogUmVmZXJlbmNlPFQ+KTogVCB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw8VD47XG5cbiAgbGV0IHsgdGFnIH0gPSByZWY7XG5cbiAgaWYgKHRhZyA9PT0gQ09OU1RBTlRfVEFHKSB7XG4gICAgcmV0dXJuIHJlZi5sYXN0VmFsdWUgYXMgVDtcbiAgfVxuXG4gIGxldCB7IGxhc3RSZXZpc2lvbiB9ID0gcmVmO1xuICBsZXQgbGFzdFZhbHVlO1xuXG4gIGlmICh0YWcgPT09IG51bGwgfHwgIXZhbGlkYXRlVGFnKHRhZywgbGFzdFJldmlzaW9uKSkge1xuICAgIGxldCB7IGNvbXB1dGUgfSA9IHJlZjtcblxuICAgIHRhZyA9IHJlZi50YWcgPSB0cmFjaygoKSA9PiB7XG4gICAgICBsYXN0VmFsdWUgPSByZWYubGFzdFZhbHVlID0gY29tcHV0ZSEoKTtcbiAgICB9LCBERUJVRyAmJiByZWYuZGVidWdMYWJlbCk7XG5cbiAgICByZWYubGFzdFJldmlzaW9uID0gdmFsdWVGb3JUYWcodGFnKTtcbiAgfSBlbHNlIHtcbiAgICBsYXN0VmFsdWUgPSByZWYubGFzdFZhbHVlO1xuICB9XG5cbiAgY29uc3VtZVRhZyh0YWcpO1xuXG4gIHJldHVybiBsYXN0VmFsdWUgYXMgVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVJlZihfcmVmOiBSZWZlcmVuY2UsIHZhbHVlOiB1bmtub3duKSB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw7XG5cbiAgbGV0IHVwZGF0ZSA9IGV4cGVjdChyZWYudXBkYXRlLCAnY2FsbGVkIHVwZGF0ZSBvbiBhIG5vbi11cGRhdGFibGUgcmVmZXJlbmNlJyk7XG5cbiAgdXBkYXRlKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoaWxkUmVmRm9yKF9wYXJlbnRSZWY6IFJlZmVyZW5jZSwgcGF0aDogc3RyaW5nKTogUmVmZXJlbmNlIHtcbiAgbGV0IHBhcmVudFJlZiA9IF9wYXJlbnRSZWYgYXMgUmVmZXJlbmNlSW1wbDtcblxuICBsZXQgdHlwZSA9IHBhcmVudFJlZltSRUZFUkVOQ0VdO1xuXG4gIGxldCBjaGlsZHJlbiA9IHBhcmVudFJlZi5jaGlsZHJlbjtcbiAgbGV0IGNoaWxkOiBSZWZlcmVuY2U7XG5cbiAgaWYgKGNoaWxkcmVuID09PSBudWxsKSB7XG4gICAgY2hpbGRyZW4gPSBwYXJlbnRSZWYuY2hpbGRyZW4gPSBuZXcgTWFwKCk7XG4gIH0gZWxzZSB7XG4gICAgY2hpbGQgPSBjaGlsZHJlbi5nZXQocGF0aCkhO1xuXG4gICAgaWYgKGNoaWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZSA9PT0gUmVmZXJlbmNlVHlwZS5VbmJvdW5kKSB7XG4gICAgbGV0IHBhcmVudCA9IHZhbHVlRm9yUmVmKHBhcmVudFJlZik7XG5cbiAgICBpZiAoaXNEaWN0KHBhcmVudCkpIHtcbiAgICAgIGNoaWxkID0gY3JlYXRlVW5ib3VuZFJlZihcbiAgICAgICAgKHBhcmVudCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbcGF0aF0sXG4gICAgICAgIERFQlVHICYmIGAke3BhcmVudFJlZi5kZWJ1Z0xhYmVsfS4ke3BhdGh9YFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hpbGQgPSBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjaGlsZCA9IGNyZWF0ZUNvbXB1dGVSZWYoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGxldCBwYXJlbnQgPSB2YWx1ZUZvclJlZihwYXJlbnRSZWYpO1xuXG4gICAgICAgIGlmIChpc0RpY3QocGFyZW50KSkge1xuICAgICAgICAgIHJldHVybiBnZXRQcm9wKHBhcmVudCwgcGF0aCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAodmFsKSA9PiB7XG4gICAgICAgIGxldCBwYXJlbnQgPSB2YWx1ZUZvclJlZihwYXJlbnRSZWYpO1xuXG4gICAgICAgIGlmIChpc0RpY3QocGFyZW50KSkge1xuICAgICAgICAgIHJldHVybiBzZXRQcm9wKHBhcmVudCwgcGF0aCwgdmFsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGNoaWxkLmRlYnVnTGFiZWwgPSBgJHtwYXJlbnRSZWYuZGVidWdMYWJlbH0uJHtwYXRofWA7XG4gICAgfVxuICB9XG5cbiAgY2hpbGRyZW4uc2V0KHBhdGgsIGNoaWxkKTtcblxuICByZXR1cm4gY2hpbGQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGlsZFJlZkZyb21QYXJ0cyhyb290OiBSZWZlcmVuY2UsIHBhcnRzOiBzdHJpbmdbXSk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWZlcmVuY2UgPSByb290O1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICByZWZlcmVuY2UgPSBjaGlsZFJlZkZvcihyZWZlcmVuY2UsIHBhcnRzW2ldKTtcbiAgfVxuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBsZXQgY3JlYXRlRGVidWdBbGlhc1JlZjogdW5kZWZpbmVkIHwgKChkZWJ1Z0xhYmVsOiBzdHJpbmcsIGlubmVyOiBSZWZlcmVuY2UpID0+IFJlZmVyZW5jZSk7XG5cbmlmIChERUJVRykge1xuICBjcmVhdGVEZWJ1Z0FsaWFzUmVmID0gKGRlYnVnTGFiZWw6IHN0cmluZywgaW5uZXI6IFJlZmVyZW5jZSkgPT4ge1xuICAgIGxldCB1cGRhdGUgPSBpc1VwZGF0YWJsZVJlZihpbm5lcikgPyAodmFsdWU6IHVua25vd24pID0+IHVwZGF0ZVJlZihpbm5lciwgdmFsdWUpIDogbnVsbDtcbiAgICBsZXQgcmVmID0gY3JlYXRlQ29tcHV0ZVJlZigoKSA9PiB2YWx1ZUZvclJlZihpbm5lciksIHVwZGF0ZSk7XG5cbiAgICByZWZbUkVGRVJFTkNFXSA9IGlubmVyW1JFRkVSRU5DRV07XG5cbiAgICByZWYuZGVidWdMYWJlbCA9IGRlYnVnTGFiZWw7XG5cbiAgICByZXR1cm4gcmVmO1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3JlZmVyZW5jZS9saWIvcmVmZXJlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBV08sTUFBTSxTQUFTLEdBQWtCLGtCQUFqQyxXQUFpQyxDQUFqQzs7O0FBd0JQLE1BQUEsYUFBQSxDQUFtQjtBQWFqQixFQUFBLFdBQUEsQ0FBQSxJQUFBLEVBQStCO0FBWHhCLFNBQUEsR0FBQSxHQUFBLElBQUE7QUFDQSxTQUFBLFlBQUEsR0FBQSxrQkFBQTtBQUdBLFNBQUEsUUFBQSxHQUFBLElBQUE7QUFFQSxTQUFBLE9BQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxNQUFBLEdBQUEsSUFBQTtBQUtMLFNBQUEsU0FBQSxJQUFBLElBQUE7QUFDRDs7QUFmZ0I7O0FBa0JiLFNBQUEsa0JBQUEsQ0FBQSxLQUFBLEVBQTJDO0FBQy9DLE1BQUksR0FBRyxHQUFHLElBQUEsYUFBQSxDQUFpQjtBQUFBO0FBQWpCLEdBQVY7QUFFQSxFQUFBLEdBQUcsQ0FBSCxHQUFBLEdBQUEsdUJBQUE7QUFDQSxFQUFBLEdBQUcsQ0FBSCxTQUFBLEdBQUEsS0FBQTs7QUFFQSxNQUFBLFVBQUEsRUFBVztBQUNULElBQUEsR0FBRyxDQUFILFVBQUEsR0FBaUIsTUFBTSxDQUF2QixLQUF1QixDQUF2QjtBQUNEOztBQUVELFNBQUEsR0FBQTtBQUNEOztBQUVNLE1BQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQTlDLFNBQThDLENBQTlDOztBQUNBLE1BQU0sY0FBYyxHQUFHLGtCQUFrQixDQUF6QyxJQUF5QyxDQUF6Qzs7QUFDQSxNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBekMsSUFBeUMsQ0FBekM7O0FBQ0EsTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQTFDLEtBQTBDLENBQTFDOzs7QUFFRCxTQUFBLGNBQUEsQ0FBQSxLQUFBLEVBQUEsVUFBQSxFQUFtRTtB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RCxTQUFBLFNBQUE7QUFDRDs7QUFFTSxJQUFBLG1CQUFBOzs7QUFFUCxJQUFBLFVBQUEsRUFBVztBQUNULGdDQUFBLG1CQUFtQixHQUFHLENBQUEsVUFBQSxFQUFBLEtBQUEsS0FBeUM7QUFDN0QsUUFBSSxNQUFNLEdBQUcsY0FBYyxDQUFkLEtBQWMsQ0FBZCxHQUF5QixLQUFELElBQW9CLFNBQVMsQ0FBQSxLQUFBLEVBQXJELEtBQXFELENBQXJELEdBQWIsSUFBQTtBQUNBLFFBQUksR0FBRyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sV0FBVyxDQUFsQixLQUFrQixDQUFsQixFQUExQixNQUEwQixDQUExQjtBQUVBLElBQUEsR0FBRyxDQUFILFNBQUcsQ0FBSCxHQUFpQixLQUFLLENBQXRCLFNBQXNCLENBQXRCO0FBRUEsSUFBQSxHQUFHLENBQUgsVUFBQSxHQUFBLFVBQUE7QUFFQSxXQUFBLEdBQUE7QUFSRixHQUFBO0FBVUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBnZXRQcm9wLCBzZXRQcm9wIH0gZnJvbSAnQGdsaW1tZXIvZ2xvYmFsLWNvbnRleHQnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBleHBlY3QsIGlzRGljdCwgc3ltYm9sIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDT05TVEFOVF9UQUcsXG4gIGNvbnN1bWVUYWcsXG4gIElOSVRJQUwsXG4gIFJldmlzaW9uLFxuICBUYWcsXG4gIHRyYWNrLFxuICB2YWxpZGF0ZVRhZyxcbiAgdmFsdWVGb3JUYWcsXG59IGZyb20gJ0BnbGltbWVyL3ZhbGlkYXRvcic7XG5cbmV4cG9ydCBjb25zdCBSRUZFUkVOQ0U6IHVuaXF1ZSBzeW1ib2wgPSBzeW1ib2woJ1JFRkVSRU5DRScpO1xuXG5jb25zdCBlbnVtIFJlZmVyZW5jZVR5cGUge1xuICBDb25zdGFudCxcbiAgQ29tcHV0ZSxcbiAgVW5ib3VuZCxcbiAgSW52b2thYmxlLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZTxfVCA9IHVua25vd24+IHtcbiAgW1JFRkVSRU5DRV06IFJlZmVyZW5jZVR5cGU7XG4gIGRlYnVnTGFiZWw/OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBudWxsIHwgTWFwPHN0cmluZyB8IFJlZmVyZW5jZSwgUmVmZXJlbmNlPjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVmZXJlbmNlO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJlbmNlRW52aXJvbm1lbnQge1xuICBnZXRQcm9wKG9iajogdW5rbm93biwgcGF0aDogc3RyaW5nKTogdW5rbm93bjtcbiAgc2V0UHJvcChvYmo6IHVua25vd24sIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB1bmtub3duO1xufVxuXG5jbGFzcyBSZWZlcmVuY2VJbXBsPFQgPSB1bmtub3duPiBpbXBsZW1lbnRzIFJlZmVyZW5jZSB7XG4gIFtSRUZFUkVOQ0VdOiBSZWZlcmVuY2VUeXBlO1xuICBwdWJsaWMgdGFnOiBPcHRpb248VGFnPiA9IG51bGw7XG4gIHB1YmxpYyBsYXN0UmV2aXNpb246IFJldmlzaW9uID0gSU5JVElBTDtcbiAgcHVibGljIGxhc3RWYWx1ZT86IFQ7XG5cbiAgcHVibGljIGNoaWxkcmVuOiBPcHRpb248TWFwPHN0cmluZyB8IFJlZmVyZW5jZSwgUmVmZXJlbmNlPj4gPSBudWxsO1xuXG4gIHB1YmxpYyBjb21wdXRlOiBPcHRpb248KCkgPT4gVD4gPSBudWxsO1xuICBwdWJsaWMgdXBkYXRlOiBPcHRpb248KHZhbDogVCkgPT4gdm9pZD4gPSBudWxsO1xuXG4gIHB1YmxpYyBkZWJ1Z0xhYmVsPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IFJlZmVyZW5jZVR5cGUpIHtcbiAgICB0aGlzW1JFRkVSRU5DRV0gPSB0eXBlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcmltaXRpdmVSZWYodmFsdWU6IHVua25vd24pOiBSZWZlcmVuY2Uge1xuICBsZXQgcmVmID0gbmV3IFJlZmVyZW5jZUltcGwoUmVmZXJlbmNlVHlwZS5VbmJvdW5kKTtcblxuICByZWYudGFnID0gQ09OU1RBTlRfVEFHO1xuICByZWYubGFzdFZhbHVlID0gdmFsdWU7XG5cbiAgaWYgKERFQlVHKSB7XG4gICAgcmVmLmRlYnVnTGFiZWwgPSBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGNvbnN0IFVOREVGSU5FRF9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYodW5kZWZpbmVkKTtcbmV4cG9ydCBjb25zdCBOVUxMX1JFRkVSRU5DRSA9IGNyZWF0ZVByaW1pdGl2ZVJlZihudWxsKTtcbmV4cG9ydCBjb25zdCBUUlVFX1JFRkVSRU5DRSA9IGNyZWF0ZVByaW1pdGl2ZVJlZih0cnVlKTtcbmV4cG9ydCBjb25zdCBGQUxTRV9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYoZmFsc2UpO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29uc3RSZWYodmFsdWU6IHVua25vd24sIGRlYnVnTGFiZWw6IGZhbHNlIHwgc3RyaW5nKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsKFJlZmVyZW5jZVR5cGUuQ29uc3RhbnQpO1xuXG4gIHJlZi5sYXN0VmFsdWUgPSB2YWx1ZTtcbiAgcmVmLnRhZyA9IENPTlNUQU5UX1RBRztcblxuICBpZiAoREVCVUcpIHtcbiAgICByZWYuZGVidWdMYWJlbCA9IGRlYnVnTGFiZWwgYXMgc3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVuYm91bmRSZWYodmFsdWU6IHVua25vd24sIGRlYnVnTGFiZWw6IGZhbHNlIHwgc3RyaW5nKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsKFJlZmVyZW5jZVR5cGUuVW5ib3VuZCk7XG5cbiAgcmVmLmxhc3RWYWx1ZSA9IHZhbHVlO1xuICByZWYudGFnID0gQ09OU1RBTlRfVEFHO1xuXG4gIGlmIChERUJVRykge1xuICAgIHJlZi5kZWJ1Z0xhYmVsID0gZGVidWdMYWJlbCBhcyBzdHJpbmc7XG4gIH1cblxuICByZXR1cm4gcmVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tcHV0ZVJlZjxUID0gdW5rbm93bj4oXG4gIGNvbXB1dGU6ICgpID0+IFQsXG4gIHVwZGF0ZTogT3B0aW9uPCh2YWx1ZTogVCkgPT4gdm9pZD4gPSBudWxsLFxuICBkZWJ1Z0xhYmVsOiBmYWxzZSB8IHN0cmluZyA9ICd1bmtub3duJ1xuKTogUmVmZXJlbmNlPFQ+IHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsPFQ+KFJlZmVyZW5jZVR5cGUuQ29tcHV0ZSk7XG5cbiAgcmVmLmNvbXB1dGUgPSBjb21wdXRlO1xuICByZWYudXBkYXRlID0gdXBkYXRlO1xuXG4gIGlmIChERUJVRykge1xuICAgIHJlZi5kZWJ1Z0xhYmVsID0gYChyZXN1bHQgb2YgYSBcXGAke2RlYnVnTGFiZWx9XFxgIGhlbHBlcilgO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlYWRPbmx5UmVmKHJlZjogUmVmZXJlbmNlKTogUmVmZXJlbmNlIHtcbiAgaWYgKCFpc1VwZGF0YWJsZVJlZihyZWYpKSByZXR1cm4gcmVmO1xuXG4gIHJldHVybiBjcmVhdGVDb21wdXRlUmVmKCgpID0+IHZhbHVlRm9yUmVmKHJlZiksIG51bGwsIHJlZi5kZWJ1Z0xhYmVsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW52b2thYmxlUmVmKHJlZjogUmVmZXJlbmNlKSB7XG4gIHJldHVybiByZWZbUkVGRVJFTkNFXSA9PT0gUmVmZXJlbmNlVHlwZS5JbnZva2FibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbnZva2FibGVSZWYoaW5uZXI6IFJlZmVyZW5jZSk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWYgPSBjcmVhdGVDb21wdXRlUmVmKFxuICAgICgpID0+IHZhbHVlRm9yUmVmKGlubmVyKSxcbiAgICAodmFsdWUpID0+IHVwZGF0ZVJlZihpbm5lciwgdmFsdWUpXG4gICk7XG4gIHJlZi5kZWJ1Z0xhYmVsID0gaW5uZXIuZGVidWdMYWJlbDtcbiAgcmVmW1JFRkVSRU5DRV0gPSBSZWZlcmVuY2VUeXBlLkludm9rYWJsZTtcblxuICByZXR1cm4gcmVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb25zdFJlZihfcmVmOiBSZWZlcmVuY2UpIHtcbiAgbGV0IHJlZiA9IF9yZWYgYXMgUmVmZXJlbmNlSW1wbDtcblxuICByZXR1cm4gcmVmLnRhZyA9PT0gQ09OU1RBTlRfVEFHO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVcGRhdGFibGVSZWYoX3JlZjogUmVmZXJlbmNlKSB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw7XG5cbiAgcmV0dXJuIHJlZi51cGRhdGUgIT09IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUZvclJlZjxUPihfcmVmOiBSZWZlcmVuY2U8VD4pOiBUIHtcbiAgbGV0IHJlZiA9IF9yZWYgYXMgUmVmZXJlbmNlSW1wbDxUPjtcblxuICBsZXQgeyB0YWcgfSA9IHJlZjtcblxuICBpZiAodGFnID09PSBDT05TVEFOVF9UQUcpIHtcbiAgICByZXR1cm4gcmVmLmxhc3RWYWx1ZSBhcyBUO1xuICB9XG5cbiAgbGV0IHsgbGFzdFJldmlzaW9uIH0gPSByZWY7XG4gIGxldCBsYXN0VmFsdWU7XG5cbiAgaWYgKHRhZyA9PT0gbnVsbCB8fCAhdmFsaWRhdGVUYWcodGFnLCBsYXN0UmV2aXNpb24pKSB7XG4gICAgbGV0IHsgY29tcHV0ZSB9ID0gcmVmO1xuXG4gICAgdGFnID0gcmVmLnRhZyA9IHRyYWNrKCgpID0+IHtcbiAgICAgIGxhc3RWYWx1ZSA9IHJlZi5sYXN0VmFsdWUgPSBjb21wdXRlISgpO1xuICAgIH0sIERFQlVHICYmIHJlZi5kZWJ1Z0xhYmVsKTtcblxuICAgIHJlZi5sYXN0UmV2aXNpb24gPSB2YWx1ZUZvclRhZyh0YWcpO1xuICB9IGVsc2Uge1xuICAgIGxhc3RWYWx1ZSA9IHJlZi5sYXN0VmFsdWU7XG4gIH1cblxuICBjb25zdW1lVGFnKHRhZyk7XG5cbiAgcmV0dXJuIGxhc3RWYWx1ZSBhcyBUO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlUmVmKF9yZWY6IFJlZmVyZW5jZSwgdmFsdWU6IHVua25vd24pIHtcbiAgbGV0IHJlZiA9IF9yZWYgYXMgUmVmZXJlbmNlSW1wbDtcblxuICBsZXQgdXBkYXRlID0gZXhwZWN0KHJlZi51cGRhdGUsICdjYWxsZWQgdXBkYXRlIG9uIGEgbm9uLXVwZGF0YWJsZSByZWZlcmVuY2UnKTtcblxuICB1cGRhdGUodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hpbGRSZWZGb3IoX3BhcmVudFJlZjogUmVmZXJlbmNlLCBwYXRoOiBzdHJpbmcpOiBSZWZlcmVuY2Uge1xuICBsZXQgcGFyZW50UmVmID0gX3BhcmVudFJlZiBhcyBSZWZlcmVuY2VJbXBsO1xuXG4gIGxldCB0eXBlID0gcGFyZW50UmVmW1JFRkVSRU5DRV07XG5cbiAgbGV0IGNoaWxkcmVuID0gcGFyZW50UmVmLmNoaWxkcmVuO1xuICBsZXQgY2hpbGQ6IFJlZmVyZW5jZTtcblxuICBpZiAoY2hpbGRyZW4gPT09IG51bGwpIHtcbiAgICBjaGlsZHJlbiA9IHBhcmVudFJlZi5jaGlsZHJlbiA9IG5ldyBNYXAoKTtcbiAgfSBlbHNlIHtcbiAgICBjaGlsZCA9IGNoaWxkcmVuLmdldChwYXRoKSE7XG5cbiAgICBpZiAoY2hpbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlID09PSBSZWZlcmVuY2VUeXBlLlVuYm91bmQpIHtcbiAgICBsZXQgcGFyZW50ID0gdmFsdWVGb3JSZWYocGFyZW50UmVmKTtcblxuICAgIGlmIChpc0RpY3QocGFyZW50KSkge1xuICAgICAgY2hpbGQgPSBjcmVhdGVVbmJvdW5kUmVmKFxuICAgICAgICAocGFyZW50IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtwYXRoXSxcbiAgICAgICAgREVCVUcgJiYgYCR7cGFyZW50UmVmLmRlYnVnTGFiZWx9LiR7cGF0aH1gXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGlsZCA9IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNoaWxkID0gY3JlYXRlQ29tcHV0ZVJlZihcbiAgICAgICgpID0+IHtcbiAgICAgICAgbGV0IHBhcmVudCA9IHZhbHVlRm9yUmVmKHBhcmVudFJlZik7XG5cbiAgICAgICAgaWYgKGlzRGljdChwYXJlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIGdldFByb3AocGFyZW50LCBwYXRoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICh2YWwpID0+IHtcbiAgICAgICAgbGV0IHBhcmVudCA9IHZhbHVlRm9yUmVmKHBhcmVudFJlZik7XG5cbiAgICAgICAgaWYgKGlzRGljdChwYXJlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIHNldFByb3AocGFyZW50LCBwYXRoLCB2YWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcblxuICAgIGlmIChERUJVRykge1xuICAgICAgY2hpbGQuZGVidWdMYWJlbCA9IGAke3BhcmVudFJlZi5kZWJ1Z0xhYmVsfS4ke3BhdGh9YDtcbiAgICB9XG4gIH1cblxuICBjaGlsZHJlbi5zZXQocGF0aCwgY2hpbGQpO1xuXG4gIHJldHVybiBjaGlsZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoaWxkUmVmRnJvbVBhcnRzKHJvb3Q6IFJlZmVyZW5jZSwgcGFydHM6IHN0cmluZ1tdKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZmVyZW5jZSA9IHJvb3Q7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIHJlZmVyZW5jZSA9IGNoaWxkUmVmRm9yKHJlZmVyZW5jZSwgcGFydHNbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGxldCBjcmVhdGVEZWJ1Z0FsaWFzUmVmOiB1bmRlZmluZWQgfCAoKGRlYnVnTGFiZWw6IHN0cmluZywgaW5uZXI6IFJlZmVyZW5jZSkgPT4gUmVmZXJlbmNlKTtcblxuaWYgKERFQlVHKSB7XG4gIGNyZWF0ZURlYnVnQWxpYXNSZWYgPSAoZGVidWdMYWJlbDogc3RyaW5nLCBpbm5lcjogUmVmZXJlbmNlKSA9PiB7XG4gICAgbGV0IHVwZGF0ZSA9IGlzVXBkYXRhYmxlUmVmKGlubmVyKSA/ICh2YWx1ZTogdW5rbm93bikgPT4gdXBkYXRlUmVmKGlubmVyLCB2YWx1ZSkgOiBudWxsO1xuICAgIGxldCByZWYgPSBjcmVhdGVDb21wdXRlUmVmKCgpID0+IHZhbHVlRm9yUmVmKGlubmVyKSwgdXBkYXRlKTtcblxuICAgIHJlZltSRUZFUkVOQ0VdID0gaW5uZXJbUkVGRVJFTkNFXTtcblxuICAgIHJlZi5kZWJ1Z0xhYmVsID0gZGVidWdMYWJlbDtcblxuICAgIHJldHVybiByZWY7XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -257,2 +257,2 @@ "use strict";

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3JlZmVyZW5jZS9saWIvcmVmZXJlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBV08sSUFBTSxTQUFTLEdBQWtCLGtCQUFqQyxXQUFpQyxDQUFqQzs7O0lBdUJQLGEsR0FhRSxTQUFBLGFBQUEsQ0FBQSxJQUFBLEVBQStCO0FBWHhCLE9BQUEsR0FBQSxHQUFBLElBQUE7QUFDQSxPQUFBLFlBQUEsR0FBQSxrQkFBQTtBQUdBLE9BQUEsUUFBQSxHQUFBLElBQUE7QUFFQSxPQUFBLE9BQUEsR0FBQSxJQUFBO0FBQ0EsT0FBQSxNQUFBLEdBQUEsSUFBQTtBQUtMLE9BQUEsU0FBQSxJQUFBLElBQUE7OztBQUlFLFNBQUEsa0JBQUEsQ0FBQSxLQUFBLEVBQTJDO0FBQy9DLE1BQUksR0FBRyxHQUFHLElBQUEsYUFBQSxDQUFpQjtBQUFBO0FBQWpCLEdBQVY7QUFFQSxFQUFBLEdBQUcsQ0FBSCxHQUFBLEdBQUEsdUJBQUE7QUFDQSxFQUFBLEdBQUcsQ0FBSCxTQUFBLEdBQUEsS0FBQTs7QUFFQSxNQUFBLFVBQUEsRUFBVztBQUNULElBQUEsR0FBRyxDQUFILFVBQUEsR0FBaUIsTUFBTSxDQUF2QixLQUF1QixDQUF2QjtBQUNEOztBQUVELFNBQUEsR0FBQTtBQUNEOztBQUVNLElBQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQTlDLFNBQThDLENBQTlDOztBQUNBLElBQU0sY0FBYyxHQUFHLGtCQUFrQixDQUF6QyxJQUF5QyxDQUF6Qzs7QUFDQSxJQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBekMsSUFBeUMsQ0FBekM7O0FBQ0EsSUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQTFDLEtBQTBDLENBQTFDOzs7QUFFRCxTQUFBLGNBQUEsQ0FBQSxLQUFBLEVBQUEsVUFBQSxFQUFtRTtBQUN2RSxNQUFJLEdBQUcsR0FBRyxJQUFBLGFB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RDtBQUNoRSxNQUFJLFNBQVMsR0FBYixJQUFBOztBQUVBLE9BQUssSUFBSSxDQUFDLEdBQVYsQ0FBQSxFQUFnQixDQUFDLEdBQUcsS0FBSyxDQUF6QixNQUFBLEVBQWtDLENBQWxDLEVBQUEsRUFBdUM7QUFDckMsSUFBQSxTQUFTLEdBQUcsV0FBVyxDQUFBLFNBQUEsRUFBWSxLQUFLLENBQXhDLENBQXdDLENBQWpCLENBQXZCO0FBQ0Q7O0FBRUQsU0FBQSxTQUFBO0FBQ0Q7O0FBRU0sSUFBQSxtQkFBQTs7O0FBRVAsSUFBQSxVQUFBLEVBQVc7QUFDVCxnQ0FBQSxtQkFBbUIsR0FBRyxTQUFBLG1CQUFBLENBQUEsVUFBQSxFQUFBLEtBQUEsRUFBeUM7QUFDN0QsUUFBSSxNQUFNLEdBQUcsY0FBYyxDQUFkLEtBQWMsQ0FBZCxHQUF5QixVQUFELEtBQUMsRUFBRDtBQUFBLGFBQW9CLFNBQVMsQ0FBQSxLQUFBLEVBQXJELEtBQXFELENBQTdCO0FBQXhCLEtBQUEsR0FBYixJQUFBO0FBQ0EsUUFBSSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsWUFBQTtBQUFBLGFBQU0sV0FBVyxDQUFsQixLQUFrQixDQUFqQjtBQUFELEtBQUEsRUFBMUIsTUFBMEIsQ0FBMUI7QUFFQSxJQUFBLEdBQUcsQ0FBSCxTQUFHLENBQUgsR0FBaUIsS0FBSyxDQUF0QixTQUFzQixDQUF0QjtBQUVBLElBQUEsR0FBRyxDQUFILFVBQUEsR0FBQSxVQUFBO0FBRUEsV0FBQSxHQUFBO0FBUkYsR0FBQTtBQVVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHsgZ2V0UHJvcCwgc2V0UHJvcCB9IGZyb20gJ0BnbGltbWVyL2dsb2JhbC1jb250ZXh0JztcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZXhwZWN0LCBpc0RpY3QsIHN5bWJvbCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgQ09OU1RBTlRfVEFHLFxuICBjb25zdW1lVGFnLFxuICBJTklUSUFMLFxuICBSZXZpc2lvbixcbiAgVGFnLFxuICB0cmFjayxcbiAgdmFsaWRhdGVUYWcsXG4gIHZhbHVlRm9yVGFnLFxufSBmcm9tICdAZ2xpbW1lci92YWxpZGF0b3InO1xuXG5leHBvcnQgY29uc3QgUkVGRVJFTkNFOiB1bmlxdWUgc3ltYm9sID0gc3ltYm9sKCdSRUZFUkVOQ0UnKTtcblxuY29uc3QgZW51bSBSZWZlcmVuY2VUeXBlIHtcbiAgQ29uc3RhbnQsXG4gIENvbXB1dGUsXG4gIFVuYm91bmQsXG4gIEludm9rYWJsZSxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2U8X1QgPSB1bmtub3duPiB7XG4gIFtSRUZFUkVOQ0VdOiBSZWZlcmVuY2VUeXBlO1xuICBkZWJ1Z0xhYmVsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBSZWZlcmVuY2U7XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2VFbnZpcm9ubWVudCB7XG4gIGdldFByb3Aob2JqOiB1bmtub3duLCBwYXRoOiBzdHJpbmcpOiB1bmtub3duO1xuICBzZXRQcm9wKG9iajogdW5rbm93biwgcGF0aDogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHVua25vd247XG59XG5cbmNsYXNzIFJlZmVyZW5jZUltcGw8VCA9IHVua25vd24+IGltcGxlbWVudHMgUmVmZXJlbmNlIHtcbiAgW1JFRkVSRU5DRV06IFJlZmVyZW5jZVR5cGU7XG4gIHB1YmxpYyB0YWc6IE9wdGlvbjxUYWc+ID0gbnVsbDtcbiAgcHVibGljIGxhc3RSZXZpc2lvbjogUmV2aXNpb24gPSBJTklUSUFMO1xuICBwdWJsaWMgbGFzdFZhbHVlPzogVDtcblxuICBwdWJsaWMgY2hpbGRyZW46IE9wdGlvbjxNYXA8c3RyaW5nIHwgUmVmZXJlbmNlLCBSZWZlcmVuY2U+PiA9IG51bGw7XG5cbiAgcHVibGljIGNvbXB1dGU6IE9wdGlvbjwoKSA9PiBUPiA9IG51bGw7XG4gIHB1YmxpYyB1cGRhdGU6IE9wdGlvbjwodmFsOiBUKSA9PiB2b2lkPiA9IG51bGw7XG5cbiAgcHVibGljIGRlYnVnTGFiZWw/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IodHlwZTogUmVmZXJlbmNlVHlwZSkge1xuICAgIHRoaXNbUkVGRVJFTkNFXSA9IHR5cGU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByaW1pdGl2ZVJlZih2YWx1ZTogdW5rbm93bik6IFJlZmVyZW5jZSB7XG4gIGxldCByZWYgPSBuZXcgUmVmZXJlbmNlSW1wbChSZWZlcmVuY2VUeXBlLlVuYm91bmQpO1xuXG4gIHJlZi50YWcgPSBDT05TVEFOVF9UQUc7XG4gIHJlZi5sYXN0VmFsdWUgPSB2YWx1ZTtcblxuICBpZiAoREVCVUcpIHtcbiAgICByZWYuZGVidWdMYWJlbCA9IFN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gcmVmO1xufVxuXG5leHBvcnQgY29uc3QgVU5ERUZJTkVEX1JFRkVSRU5DRSA9IGNyZWF0ZVByaW1pdGl2ZVJlZih1bmRlZmluZWQpO1xuZXhwb3J0IGNvbnN0IE5VTExfUkVGRVJFTkNFID0gY3JlYXRlUHJpbWl0aXZlUmVmKG51bGwpO1xuZXhwb3J0IGNvbnN0IFRSVUVfUkVGRVJFTkNFID0gY3JlYXRlUHJpbWl0aXZlUmVmKHRydWUpO1xuZXhwb3J0IGNvbnN0IEZBTFNFX1JFRkVSRU5DRSA9IGNyZWF0ZVByaW1pdGl2ZVJlZihmYWxzZSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb25zdFJlZih2YWx1ZTogdW5rbm93biwgZGVidWdMYWJlbDogZmFsc2UgfCBzdHJpbmcpOiBSZWZlcmVuY2Uge1xuICBsZXQgcmVmID0gbmV3IFJlZmVyZW5jZUltcGwoUmVmZXJlbmNlVHlwZS5Db25zdGFudCk7XG5cbiAgcmVmLmxhc3RWYWx1ZSA9IHZhbHVlO1xuICByZWYudGFnID0gQ09OU1RBTlRfVEFHO1xuXG4gIGlmIChERUJVRykge1xuICAgIHJlZi5kZWJ1Z0xhYmVsID0gZGVidWdMYWJlbCBhcyBzdHJpbmc7XG4gIH1cblxuICByZXR1cm4gcmVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVW5ib3VuZFJlZih2YWx1ZTogdW5rbm93biwgZGVidWdMYWJlbDogZmFsc2UgfCBzdHJpbmcpOiBSZWZlcmVuY2Uge1xuICBsZXQgcmVmID0gbmV3IFJlZmVyZW5jZUltcGwoUmVmZXJlbmNlVHlwZS5VbmJvdW5kKTtcblxuICByZWYubGFzdFZhbHVlID0gdmFsdWU7XG4gIHJlZi50YWcgPSBDT05TVEFOVF9UQUc7XG5cbiAgaWYgKERFQlVHKSB7XG4gICAgcmVmLmRlYnVnTGFiZWwgPSBkZWJ1Z0xhYmVsIGFzIHN0cmluZztcbiAgfVxuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb21wdXRlUmVmPFQgPSB1bmtub3duPihcbiAgY29tcHV0ZTogKCkgPT4gVCxcbiAgdXBkYXRlOiBPcHRpb248KHZhbHVlOiBUKSA9PiB2b2lkPiA9IG51bGwsXG4gIGRlYnVnTGFiZWw6IGZhbHNlIHwgc3RyaW5nID0gJ3Vua25vd24nXG4pOiBSZWZlcmVuY2U8VD4ge1xuICBsZXQgcmVmID0gbmV3IFJlZmVyZW5jZUltcGw8VD4oUmVmZXJlbmNlVHlwZS5Db21wdXRlKTtcblxuICByZWYuY29tcHV0ZSA9IGNvbXB1dGU7XG4gIHJlZi51cGRhdGUgPSB1cGRhdGU7XG5cbiAgaWYgKERFQlVHKSB7XG4gICAgcmVmLmRlYnVnTGFiZWwgPSBgKHJlc3VsdCBvZiBhIFxcYCR7ZGVidWdMYWJlbH1cXGAgaGVscGVyKWA7XG4gIH1cblxuICByZXR1cm4gcmVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVhZE9ubHlSZWYocmVmOiBSZWZlcmVuY2UpOiBSZWZlcmVuY2Uge1xuICBpZiAoIWlzVXBkYXRhYmxlUmVmKHJlZikpIHJldHVybiByZWY7XG5cbiAgcmV0dXJuIGNyZWF0ZUNvbXB1dGVSZWYoKCkgPT4gdmFsdWVGb3JSZWYocmVmKSwgbnVsbCwgcmVmLmRlYnVnTGFiZWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnZva2FibGVSZWYocmVmOiBSZWZlcmVuY2UpIHtcbiAgcmV0dXJuIHJlZltSRUZFUkVOQ0VdID09PSBSZWZlcmVuY2VUeXBlLkludm9rYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUludm9rYWJsZVJlZihpbm5lcjogUmVmZXJlbmNlKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZiA9IGNyZWF0ZUNvbXB1dGVSZWYoXG4gICAgKCkgPT4gdmFsdWVGb3JSZWYoaW5uZXIpLFxuICAgICh2YWx1ZSkgPT4gdXBkYXRlUmVmKGlubmVyLCB2YWx1ZSlcbiAgKTtcbiAgcmVmLmRlYnVnTGFiZWwgPSBpbm5lci5kZWJ1Z0xhYmVsO1xuICByZWZbUkVGRVJFTkNFXSA9IFJlZmVyZW5jZVR5cGUuSW52b2thYmxlO1xuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnN0UmVmKF9yZWY6IFJlZmVyZW5jZSkge1xuICBsZXQgcmVmID0gX3JlZiBhcyBSZWZlcmVuY2VJbXBsO1xuXG4gIHJldHVybiByZWYudGFnID09PSBDT05TVEFOVF9UQUc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1VwZGF0YWJsZVJlZihfcmVmOiBSZWZlcmVuY2UpIHtcbiAgbGV0IHJlZiA9IF9yZWYgYXMgUmVmZXJlbmNlSW1wbDtcblxuICByZXR1cm4gcmVmLnVwZGF0ZSAhPT0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRm9yUmVmPFQ+KF9yZWY6IFJlZmVyZW5jZTxUPik6IFQge1xuICBsZXQgcmVmID0gX3JlZiBhcyBSZWZlcmVuY2VJbXBsPFQ+O1xuXG4gIGxldCB7IHRhZyB9ID0gcmVmO1xuXG4gIGlmICh0YWcgPT09IENPTlNUQU5UX1RBRykge1xuICAgIHJldHVybiByZWYubGFzdFZhbHVlIGFzIFQ7XG4gIH1cblxuICBsZXQgeyBsYXN0UmV2aXNpb24gfSA9IHJlZjtcbiAgbGV0IGxhc3RWYWx1ZTtcblxuICBpZiAodGFnID09PSBudWxsIHx8ICF2YWxpZGF0ZVRhZyh0YWcsIGxhc3RSZXZpc2lvbikpIHtcbiAgICBsZXQgeyBjb21wdXRlIH0gPSByZWY7XG5cbiAgICB0YWcgPSByZWYudGFnID0gdHJhY2soKCkgPT4ge1xuICAgICAgbGFzdFZhbHVlID0gcmVmLmxhc3RWYWx1ZSA9IGNvbXB1dGUhKCk7XG4gICAgfSwgREVCVUcgJiYgcmVmLmRlYnVnTGFiZWwpO1xuXG4gICAgcmVmLmxhc3RSZXZpc2lvbiA9IHZhbHVlRm9yVGFnKHRhZyk7XG4gIH0gZWxzZSB7XG4gICAgbGFzdFZhbHVlID0gcmVmLmxhc3RWYWx1ZTtcbiAgfVxuXG4gIGNvbnN1bWVUYWcodGFnKTtcblxuICByZXR1cm4gbGFzdFZhbHVlIGFzIFQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVSZWYoX3JlZjogUmVmZXJlbmNlLCB2YWx1ZTogdW5rbm93bikge1xuICBsZXQgcmVmID0gX3JlZiBhcyBSZWZlcmVuY2VJbXBsO1xuXG4gIGxldCB1cGRhdGUgPSBleHBlY3QocmVmLnVwZGF0ZSwgJ2NhbGxlZCB1cGRhdGUgb24gYSBub24tdXBkYXRhYmxlIHJlZmVyZW5jZScpO1xuXG4gIHVwZGF0ZSh2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGlsZFJlZkZvcihfcGFyZW50UmVmOiBSZWZlcmVuY2UsIHBhdGg6IHN0cmluZyk6IFJlZmVyZW5jZSB7XG4gIGxldCBwYXJlbnRSZWYgPSBfcGFyZW50UmVmIGFzIFJlZmVyZW5jZUltcGw7XG5cbiAgbGV0IHR5cGUgPSBwYXJlbnRSZWZbUkVGRVJFTkNFXTtcblxuICBsZXQgY2hpbGRyZW4gPSBwYXJlbnRSZWYuY2hpbGRyZW47XG4gIGxldCBjaGlsZDogUmVmZXJlbmNlO1xuXG4gIGlmIChjaGlsZHJlbiA9PT0gbnVsbCkge1xuICAgIGNoaWxkcmVuID0gcGFyZW50UmVmLmNoaWxkcmVuID0gbmV3IE1hcCgpO1xuICB9IGVsc2Uge1xuICAgIGNoaWxkID0gY2hpbGRyZW4uZ2V0KHBhdGgpITtcblxuICAgIGlmIChjaGlsZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGUgPT09IFJlZmVyZW5jZVR5cGUuVW5ib3VuZCkge1xuICAgIGxldCBwYXJlbnQgPSB2YWx1ZUZvclJlZihwYXJlbnRSZWYpO1xuXG4gICAgaWYgKGlzRGljdChwYXJlbnQpKSB7XG4gICAgICBjaGlsZCA9IGNyZWF0ZVVuYm91bmRSZWYoXG4gICAgICAgIChwYXJlbnQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3BhdGhdLFxuICAgICAgICBERUJVRyAmJiBgJHtwYXJlbnRSZWYuZGVidWdMYWJlbH0uJHtwYXRofWBcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoaWxkID0gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY2hpbGQgPSBjcmVhdGVDb21wdXRlUmVmKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBsZXQgcGFyZW50ID0gdmFsdWVGb3JSZWYocGFyZW50UmVmKTtcblxuICAgICAgICBpZiAoaXNEaWN0KHBhcmVudCkpIHtcbiAgICAgICAgICByZXR1cm4gZ2V0UHJvcChwYXJlbnQsIHBhdGgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKHZhbCkgPT4ge1xuICAgICAgICBsZXQgcGFyZW50ID0gdmFsdWVGb3JSZWYocGFyZW50UmVmKTtcblxuICAgICAgICBpZiAoaXNEaWN0KHBhcmVudCkpIHtcbiAgICAgICAgICByZXR1cm4gc2V0UHJvcChwYXJlbnQsIHBhdGgsIHZhbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKERFQlVHKSB7XG4gICAgICBjaGlsZC5kZWJ1Z0xhYmVsID0gYCR7cGFyZW50UmVmLmRlYnVnTGFiZWx9LiR7cGF0aH1gO1xuICAgIH1cbiAgfVxuXG4gIGNoaWxkcmVuLnNldChwYXRoLCBjaGlsZCk7XG5cbiAgcmV0dXJuIGNoaWxkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hpbGRSZWZGcm9tUGFydHMocm9vdDogUmVmZXJlbmNlLCBwYXJ0czogc3RyaW5nW10pOiBSZWZlcmVuY2Uge1xuICBsZXQgcmVmZXJlbmNlID0gcm9vdDtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgcmVmZXJlbmNlID0gY2hpbGRSZWZGb3IocmVmZXJlbmNlLCBwYXJ0c1tpXSk7XG4gIH1cblxuICByZXR1cm4gcmVmZXJlbmNlO1xufVxuXG5leHBvcnQgbGV0IGNyZWF0ZURlYnVnQWxpYXNSZWY6IHVuZGVmaW5lZCB8ICgoZGVidWdMYWJlbDogc3RyaW5nLCBpbm5lcjogUmVmZXJlbmNlKSA9PiBSZWZlcmVuY2UpO1xuXG5pZiAoREVCVUcpIHtcbiAgY3JlYXRlRGVidWdBbGlhc1JlZiA9IChkZWJ1Z0xhYmVsOiBzdHJpbmcsIGlubmVyOiBSZWZlcmVuY2UpID0+IHtcbiAgICBsZXQgdXBkYXRlID0gaXNVcGRhdGFibGVSZWYoaW5uZXIpID8gKHZhbHVlOiB1bmtub3duKSA9PiB1cGRhdGVSZWYoaW5uZXIsIHZhbHVlKSA6IG51bGw7XG4gICAgbGV0IHJlZiA9IGNyZWF0ZUNvbXB1dGVSZWYoKCkgPT4gdmFsdWVGb3JSZWYoaW5uZXIpLCB1cGRhdGUpO1xuXG4gICAgcmVmW1JFRkVSRU5DRV0gPSBpbm5lcltSRUZFUkVOQ0VdO1xuXG4gICAgcmVmLmRlYnVnTGFiZWwgPSBkZWJ1Z0xhYmVsO1xuXG4gICAgcmV0dXJuIHJlZjtcbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3JlZmVyZW5jZS9saWIvcmVmZXJlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBV08sSUFBTSxTQUFTLEdBQWtCLGtCQUFqQyxXQUFpQyxDQUFqQzs7O0lBd0JQLGEsR0FhRSxTQUFBLGFBQUEsQ0FBQSxJQUFBLEVBQStCO0FBWHhCLE9BQUEsR0FBQSxHQUFBLElBQUE7QUFDQSxPQUFBLFlBQUEsR0FBQSxrQkFBQTtBQUdBLE9BQUEsUUFBQSxHQUFBLElBQUE7QUFFQSxPQUFBLE9BQUEsR0FBQSxJQUFBO0FBQ0EsT0FBQSxNQUFBLEdBQUEsSUFBQTtBQUtMLE9BQUEsU0FBQSxJQUFBLElBQUE7OztBQUlFLFNBQUEsa0JBQUEsQ0FBQSxLQUFBLEVBQTJDO0FBQy9DLE1BQUksR0FBRyxHQUFHLElBQUEsYUFBQSxDQUFpQjtBQUFBO0FBQWpCLEdBQVY7QUFFQSxFQUFBLEdBQUcsQ0FBSCxHQUFBLEdBQUEsdUJBQUE7QUFDQSxFQUFBLEdBQUcsQ0FBSCxTQUFBLEdBQUEsS0FBQTs7QUFFQSxNQUFBLFVBQUEsRUFBVztBQUNULElBQUEsR0FBRyxDQUFILFVBQUEsR0FBaUIsTUFBTSxDQUF2QixLQUF1QixDQUF2QjtBQUNEOztBQUVELFNBQUEsR0FBQTtBQUNEOztBQUVNLElBQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQTlDLFNBQThDLENBQTlDOztBQUNBLElBQU0sY0FBYyxHQUFHLGtCQUFrQixDQUF6QyxJQUF5QyxDQUF6Qzs7QUFDQSxJQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBekMsSUFBeUMsQ0FBekM7O0FBQ0EsSUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQTFDLEtBQTBDLENBQTFDOzs7QUFFRCxTQUFBLGNBQUEsQ0FBQSxLQUFBLEVBQUEsVUFBQSxFQUFtRTtBQUN2RSxNQUFJLEdBQUcsR0FBRyxJQUFBLGFB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RDtBQUNoRSxNQUFJLFNBQVMsR0FBYixJQUFBOztBQUVBLE9BQUssSUFBSSxDQUFDLEdBQVYsQ0FBQSxFQUFnQixDQUFDLEdBQUcsS0FBSyxDQUF6QixNQUFBLEVBQWtDLENBQWxDLEVBQUEsRUFBdUM7QUFDckMsSUFBQSxTQUFTLEdBQUcsV0FBVyxDQUFBLFNBQUEsRUFBWSxLQUFLLENBQXhDLENBQXdDLENBQWpCLENBQXZCO0FBQ0Q7O0FBRUQsU0FBQSxTQUFBO0FBQ0Q7O0FBRU0sSUFBQSxtQkFBQTs7O0FBRVAsSUFBQSxVQUFBLEVBQVc7QUFDVCxnQ0FBQSxtQkFBbUIsR0FBRyxTQUFBLG1CQUFBLENBQUEsVUFBQSxFQUFBLEtBQUEsRUFBeUM7QUFDN0QsUUFBSSxNQUFNLEdBQUcsY0FBYyxDQUFkLEtBQWMsQ0FBZCxHQUF5QixVQUFELEtBQUMsRUFBRDtBQUFBLGFBQW9CLFNBQVMsQ0FBQSxLQUFBLEVBQXJELEtBQXFELENBQTdCO0FBQXhCLEtBQUEsR0FBYixJQUFBO0FBQ0EsUUFBSSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsWUFBQTtBQUFBLGFBQU0sV0FBVyxDQUFsQixLQUFrQixDQUFqQjtBQUFELEtBQUEsRUFBMUIsTUFBMEIsQ0FBMUI7QUFFQSxJQUFBLEdBQUcsQ0FBSCxTQUFHLENBQUgsR0FBaUIsS0FBSyxDQUF0QixTQUFzQixDQUF0QjtBQUVBLElBQUEsR0FBRyxDQUFILFVBQUEsR0FBQSxVQUFBO0FBRUEsV0FBQSxHQUFBO0FBUkYsR0FBQTtBQVVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHsgZ2V0UHJvcCwgc2V0UHJvcCB9IGZyb20gJ0BnbGltbWVyL2dsb2JhbC1jb250ZXh0JztcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZXhwZWN0LCBpc0RpY3QsIHN5bWJvbCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgQ09OU1RBTlRfVEFHLFxuICBjb25zdW1lVGFnLFxuICBJTklUSUFMLFxuICBSZXZpc2lvbixcbiAgVGFnLFxuICB0cmFjayxcbiAgdmFsaWRhdGVUYWcsXG4gIHZhbHVlRm9yVGFnLFxufSBmcm9tICdAZ2xpbW1lci92YWxpZGF0b3InO1xuXG5leHBvcnQgY29uc3QgUkVGRVJFTkNFOiB1bmlxdWUgc3ltYm9sID0gc3ltYm9sKCdSRUZFUkVOQ0UnKTtcblxuY29uc3QgZW51bSBSZWZlcmVuY2VUeXBlIHtcbiAgQ29uc3RhbnQsXG4gIENvbXB1dGUsXG4gIFVuYm91bmQsXG4gIEludm9rYWJsZSxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2U8X1QgPSB1bmtub3duPiB7XG4gIFtSRUZFUkVOQ0VdOiBSZWZlcmVuY2VUeXBlO1xuICBkZWJ1Z0xhYmVsPzogc3RyaW5nO1xuICBjaGlsZHJlbjogbnVsbCB8IE1hcDxzdHJpbmcgfCBSZWZlcmVuY2UsIFJlZmVyZW5jZT47XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlZmVyZW5jZTtcblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZUVudmlyb25tZW50IHtcbiAgZ2V0UHJvcChvYmo6IHVua25vd24sIHBhdGg6IHN0cmluZyk6IHVua25vd247XG4gIHNldFByb3Aob2JqOiB1bmtub3duLCBwYXRoOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdW5rbm93bjtcbn1cblxuY2xhc3MgUmVmZXJlbmNlSW1wbDxUID0gdW5rbm93bj4gaW1wbGVtZW50cyBSZWZlcmVuY2Uge1xuICBbUkVGRVJFTkNFXTogUmVmZXJlbmNlVHlwZTtcbiAgcHVibGljIHRhZzogT3B0aW9uPFRhZz4gPSBudWxsO1xuICBwdWJsaWMgbGFzdFJldmlzaW9uOiBSZXZpc2lvbiA9IElOSVRJQUw7XG4gIHB1YmxpYyBsYXN0VmFsdWU/OiBUO1xuXG4gIHB1YmxpYyBjaGlsZHJlbjogT3B0aW9uPE1hcDxzdHJpbmcgfCBSZWZlcmVuY2UsIFJlZmVyZW5jZT4+ID0gbnVsbDtcblxuICBwdWJsaWMgY29tcHV0ZTogT3B0aW9uPCgpID0+IFQ+ID0gbnVsbDtcbiAgcHVibGljIHVwZGF0ZTogT3B0aW9uPCh2YWw6IFQpID0+IHZvaWQ+ID0gbnVsbDtcblxuICBwdWJsaWMgZGVidWdMYWJlbD86IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih0eXBlOiBSZWZlcmVuY2VUeXBlKSB7XG4gICAgdGhpc1tSRUZFUkVOQ0VdID0gdHlwZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJpbWl0aXZlUmVmKHZhbHVlOiB1bmtub3duKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsKFJlZmVyZW5jZVR5cGUuVW5ib3VuZCk7XG5cbiAgcmVmLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgcmVmLmxhc3RWYWx1ZSA9IHZhbHVlO1xuXG4gIGlmIChERUJVRykge1xuICAgIHJlZi5kZWJ1Z0xhYmVsID0gU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBjb25zdCBVTkRFRklORURfUkVGRVJFTkNFID0gY3JlYXRlUHJpbWl0aXZlUmVmKHVuZGVmaW5lZCk7XG5leHBvcnQgY29uc3QgTlVMTF9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYobnVsbCk7XG5leHBvcnQgY29uc3QgVFJVRV9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYodHJ1ZSk7XG5leHBvcnQgY29uc3QgRkFMU0VfUkVGRVJFTkNFID0gY3JlYXRlUHJpbWl0aXZlUmVmKGZhbHNlKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnN0UmVmKHZhbHVlOiB1bmtub3duLCBkZWJ1Z0xhYmVsOiBmYWxzZSB8IHN0cmluZyk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWYgPSBuZXcgUmVmZXJlbmNlSW1wbChSZWZlcmVuY2VUeXBlLkNvbnN0YW50KTtcblxuICByZWYubGFzdFZhbHVlID0gdmFsdWU7XG4gIHJlZi50YWcgPSBDT05TVEFOVF9UQUc7XG5cbiAgaWYgKERFQlVHKSB7XG4gICAgcmVmLmRlYnVnTGFiZWwgPSBkZWJ1Z0xhYmVsIGFzIHN0cmluZztcbiAgfVxuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVbmJvdW5kUmVmKHZhbHVlOiB1bmtub3duLCBkZWJ1Z0xhYmVsOiBmYWxzZSB8IHN0cmluZyk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWYgPSBuZXcgUmVmZXJlbmNlSW1wbChSZWZlcmVuY2VUeXBlLlVuYm91bmQpO1xuXG4gIHJlZi5sYXN0VmFsdWUgPSB2YWx1ZTtcbiAgcmVmLnRhZyA9IENPTlNUQU5UX1RBRztcblxuICBpZiAoREVCVUcpIHtcbiAgICByZWYuZGVidWdMYWJlbCA9IGRlYnVnTGFiZWwgYXMgc3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbXB1dGVSZWY8VCA9IHVua25vd24+KFxuICBjb21wdXRlOiAoKSA9PiBULFxuICB1cGRhdGU6IE9wdGlvbjwodmFsdWU6IFQpID0+IHZvaWQ+ID0gbnVsbCxcbiAgZGVidWdMYWJlbDogZmFsc2UgfCBzdHJpbmcgPSAndW5rbm93bidcbik6IFJlZmVyZW5jZTxUPiB7XG4gIGxldCByZWYgPSBuZXcgUmVmZXJlbmNlSW1wbDxUPihSZWZlcmVuY2VUeXBlLkNvbXB1dGUpO1xuXG4gIHJlZi5jb21wdXRlID0gY29tcHV0ZTtcbiAgcmVmLnVwZGF0ZSA9IHVwZGF0ZTtcblxuICBpZiAoREVCVUcpIHtcbiAgICByZWYuZGVidWdMYWJlbCA9IGAocmVzdWx0IG9mIGEgXFxgJHtkZWJ1Z0xhYmVsfVxcYCBoZWxwZXIpYDtcbiAgfVxuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWFkT25seVJlZihyZWY6IFJlZmVyZW5jZSk6IFJlZmVyZW5jZSB7XG4gIGlmICghaXNVcGRhdGFibGVSZWYocmVmKSkgcmV0dXJuIHJlZjtcblxuICByZXR1cm4gY3JlYXRlQ29tcHV0ZVJlZigoKSA9PiB2YWx1ZUZvclJlZihyZWYpLCBudWxsLCByZWYuZGVidWdMYWJlbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ludm9rYWJsZVJlZihyZWY6IFJlZmVyZW5jZSkge1xuICByZXR1cm4gcmVmW1JFRkVSRU5DRV0gPT09IFJlZmVyZW5jZVR5cGUuSW52b2thYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW52b2thYmxlUmVmKGlubmVyOiBSZWZlcmVuY2UpOiBSZWZlcmVuY2Uge1xuICBsZXQgcmVmID0gY3JlYXRlQ29tcHV0ZVJlZihcbiAgICAoKSA9PiB2YWx1ZUZvclJlZihpbm5lciksXG4gICAgKHZhbHVlKSA9PiB1cGRhdGVSZWYoaW5uZXIsIHZhbHVlKVxuICApO1xuICByZWYuZGVidWdMYWJlbCA9IGlubmVyLmRlYnVnTGFiZWw7XG4gIHJlZltSRUZFUkVOQ0VdID0gUmVmZXJlbmNlVHlwZS5JbnZva2FibGU7XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uc3RSZWYoX3JlZjogUmVmZXJlbmNlKSB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw7XG5cbiAgcmV0dXJuIHJlZi50YWcgPT09IENPTlNUQU5UX1RBRztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXBkYXRhYmxlUmVmKF9yZWY6IFJlZmVyZW5jZSkge1xuICBsZXQgcmVmID0gX3JlZiBhcyBSZWZlcmVuY2VJbXBsO1xuXG4gIHJldHVybiByZWYudXBkYXRlICE9PSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGb3JSZWY8VD4oX3JlZjogUmVmZXJlbmNlPFQ+KTogVCB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw8VD47XG5cbiAgbGV0IHsgdGFnIH0gPSByZWY7XG5cbiAgaWYgKHRhZyA9PT0gQ09OU1RBTlRfVEFHKSB7XG4gICAgcmV0dXJuIHJlZi5sYXN0VmFsdWUgYXMgVDtcbiAgfVxuXG4gIGxldCB7IGxhc3RSZXZpc2lvbiB9ID0gcmVmO1xuICBsZXQgbGFzdFZhbHVlO1xuXG4gIGlmICh0YWcgPT09IG51bGwgfHwgIXZhbGlkYXRlVGFnKHRhZywgbGFzdFJldmlzaW9uKSkge1xuICAgIGxldCB7IGNvbXB1dGUgfSA9IHJlZjtcblxuICAgIHRhZyA9IHJlZi50YWcgPSB0cmFjaygoKSA9PiB7XG4gICAgICBsYXN0VmFsdWUgPSByZWYubGFzdFZhbHVlID0gY29tcHV0ZSEoKTtcbiAgICB9LCBERUJVRyAmJiByZWYuZGVidWdMYWJlbCk7XG5cbiAgICByZWYubGFzdFJldmlzaW9uID0gdmFsdWVGb3JUYWcodGFnKTtcbiAgfSBlbHNlIHtcbiAgICBsYXN0VmFsdWUgPSByZWYubGFzdFZhbHVlO1xuICB9XG5cbiAgY29uc3VtZVRhZyh0YWcpO1xuXG4gIHJldHVybiBsYXN0VmFsdWUgYXMgVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVJlZihfcmVmOiBSZWZlcmVuY2UsIHZhbHVlOiB1bmtub3duKSB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw7XG5cbiAgbGV0IHVwZGF0ZSA9IGV4cGVjdChyZWYudXBkYXRlLCAnY2FsbGVkIHVwZGF0ZSBvbiBhIG5vbi11cGRhdGFibGUgcmVmZXJlbmNlJyk7XG5cbiAgdXBkYXRlKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoaWxkUmVmRm9yKF9wYXJlbnRSZWY6IFJlZmVyZW5jZSwgcGF0aDogc3RyaW5nKTogUmVmZXJlbmNlIHtcbiAgbGV0IHBhcmVudFJlZiA9IF9wYXJlbnRSZWYgYXMgUmVmZXJlbmNlSW1wbDtcblxuICBsZXQgdHlwZSA9IHBhcmVudFJlZltSRUZFUkVOQ0VdO1xuXG4gIGxldCBjaGlsZHJlbiA9IHBhcmVudFJlZi5jaGlsZHJlbjtcbiAgbGV0IGNoaWxkOiBSZWZlcmVuY2U7XG5cbiAgaWYgKGNoaWxkcmVuID09PSBudWxsKSB7XG4gICAgY2hpbGRyZW4gPSBwYXJlbnRSZWYuY2hpbGRyZW4gPSBuZXcgTWFwKCk7XG4gIH0gZWxzZSB7XG4gICAgY2hpbGQgPSBjaGlsZHJlbi5nZXQocGF0aCkhO1xuXG4gICAgaWYgKGNoaWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZSA9PT0gUmVmZXJlbmNlVHlwZS5VbmJvdW5kKSB7XG4gICAgbGV0IHBhcmVudCA9IHZhbHVlRm9yUmVmKHBhcmVudFJlZik7XG5cbiAgICBpZiAoaXNEaWN0KHBhcmVudCkpIHtcbiAgICAgIGNoaWxkID0gY3JlYXRlVW5ib3VuZFJlZihcbiAgICAgICAgKHBhcmVudCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbcGF0aF0sXG4gICAgICAgIERFQlVHICYmIGAke3BhcmVudFJlZi5kZWJ1Z0xhYmVsfS4ke3BhdGh9YFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hpbGQgPSBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjaGlsZCA9IGNyZWF0ZUNvbXB1dGVSZWYoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGxldCBwYXJlbnQgPSB2YWx1ZUZvclJlZihwYXJlbnRSZWYpO1xuXG4gICAgICAgIGlmIChpc0RpY3QocGFyZW50KSkge1xuICAgICAgICAgIHJldHVybiBnZXRQcm9wKHBhcmVudCwgcGF0aCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAodmFsKSA9PiB7XG4gICAgICAgIGxldCBwYXJlbnQgPSB2YWx1ZUZvclJlZihwYXJlbnRSZWYpO1xuXG4gICAgICAgIGlmIChpc0RpY3QocGFyZW50KSkge1xuICAgICAgICAgIHJldHVybiBzZXRQcm9wKHBhcmVudCwgcGF0aCwgdmFsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGNoaWxkLmRlYnVnTGFiZWwgPSBgJHtwYXJlbnRSZWYuZGVidWdMYWJlbH0uJHtwYXRofWA7XG4gICAgfVxuICB9XG5cbiAgY2hpbGRyZW4uc2V0KHBhdGgsIGNoaWxkKTtcblxuICByZXR1cm4gY2hpbGQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGlsZFJlZkZyb21QYXJ0cyhyb290OiBSZWZlcmVuY2UsIHBhcnRzOiBzdHJpbmdbXSk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWZlcmVuY2UgPSByb290O1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICByZWZlcmVuY2UgPSBjaGlsZFJlZkZvcihyZWZlcmVuY2UsIHBhcnRzW2ldKTtcbiAgfVxuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBsZXQgY3JlYXRlRGVidWdBbGlhc1JlZjogdW5kZWZpbmVkIHwgKChkZWJ1Z0xhYmVsOiBzdHJpbmcsIGlubmVyOiBSZWZlcmVuY2UpID0+IFJlZmVyZW5jZSk7XG5cbmlmIChERUJVRykge1xuICBjcmVhdGVEZWJ1Z0FsaWFzUmVmID0gKGRlYnVnTGFiZWw6IHN0cmluZywgaW5uZXI6IFJlZmVyZW5jZSkgPT4ge1xuICAgIGxldCB1cGRhdGUgPSBpc1VwZGF0YWJsZVJlZihpbm5lcikgPyAodmFsdWU6IHVua25vd24pID0+IHVwZGF0ZVJlZihpbm5lciwgdmFsdWUpIDogbnVsbDtcbiAgICBsZXQgcmVmID0gY3JlYXRlQ29tcHV0ZVJlZigoKSA9PiB2YWx1ZUZvclJlZihpbm5lciksIHVwZGF0ZSk7XG5cbiAgICByZWZbUkVGRVJFTkNFXSA9IGlubmVyW1JFRkVSRU5DRV07XG5cbiAgICByZWYuZGVidWdMYWJlbCA9IGRlYnVnTGFiZWw7XG5cbiAgICByZXR1cm4gcmVmO1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -204,2 +204,2 @@ import { DEBUG } from '@glimmer/env';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3JlZmVyZW5jZS9saWIvcmVmZXJlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsS0FBVCxRQUFzQixjQUF0QjtBQUNBLFNBQVMsT0FBVCxFQUFrQixPQUFsQixRQUFpQyx5QkFBakM7QUFFQSxTQUFpQixNQUFqQixFQUF5QixNQUF6QixRQUF1QyxlQUF2QztBQUNBLFNBQ0UsWUFERixFQUVFLFVBRkYsRUFHRSxPQUhGLEVBTUUsS0FORixFQU9FLFdBUEYsRUFRRSxXQVJGLFFBU08sb0JBVFA7QUFXQSxPQUFPLE1BQU0sU0FBUyxHQUFrQixNQUFNLENBQUMsV0FBRCxDQUF2Qzs7QUF1QlAsTUFBTSxhQUFOLENBQW1CO0FBYWpCLEVBQUEsV0FBQSxDQUFZLElBQVosRUFBK0I7QUFYeEIsU0FBQSxHQUFBLEdBQW1CLElBQW5CO0FBQ0EsU0FBQSxZQUFBLEdBQXlCLE9BQXpCO0FBR0EsU0FBQSxRQUFBLEdBQXVELElBQXZEO0FBRUEsU0FBQSxPQUFBLEdBQTJCLElBQTNCO0FBQ0EsU0FBQSxNQUFBLEdBQW1DLElBQW5DO0FBS0wsU0FBSyxTQUFMLElBQWtCLElBQWxCO0FBQ0Q7O0FBZmdCOztBQWtCbkIsT0FBTSxTQUFVLGtCQUFWLENBQTZCLEtBQTdCLEVBQTJDO0FBQy9DLE1BQUksR0FBRyxHQUFHLElBQUksYUFBSixDQUFpQjtBQUFBO0FBQWpCLEdBQVY7QUFFQSxFQUFBLEdBQUcsQ0FBQyxHQUFKLEdBQVUsWUFBVjtBQUNBLEVBQUEsR0FBRyxDQUFDLFNBQUosR0FBZ0IsS0FBaEI7O0FBRUEsTUFBSSxLQUFKLEVBQVc7QUFDVCxJQUFBLEdBQUcsQ0FBQyxVQUFKLEdBQWlCLE1BQU0sQ0FBQyxLQUFELENBQXZCO0FBQ0Q7O0FBRUQsU0FBTyxHQUFQO0FBQ0Q7QUFFRCxPQUFPLE1BQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQUMsU0FBRCxDQUE5QztBQUNQLE9BQU8sTUFBTSxj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LEVBQUEsUUFBUSxDQUFDLEdBQVQsQ0FBYSxJQUFiLEVBQW1CLEtBQW5CO0FBRUEsU0FBTyxLQUFQO0FBQ0Q7QUFFRCxPQUFNLFNBQVUsaUJBQVYsQ0FBNEIsSUFBNUIsRUFBNkMsS0FBN0MsRUFBNEQ7QUFDaEUsTUFBSSxTQUFTLEdBQUcsSUFBaEI7O0FBRUEsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFiLEVBQWdCLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBMUIsRUFBa0MsQ0FBQyxFQUFuQyxFQUF1QztBQUNyQyxJQUFBLFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBRCxFQUFZLEtBQUssQ0FBQyxDQUFELENBQWpCLENBQXZCO0FBQ0Q7O0FBRUQsU0FBTyxTQUFQO0FBQ0Q7QUFFRCxPQUFPLElBQUksbUJBQUo7O0FBRVAsSUFBSSxLQUFKLEVBQVc7QUFDVCxFQUFBLG1CQUFtQixHQUFHLENBQUMsVUFBRCxFQUFxQixLQUFyQixLQUF5QztBQUM3RCxRQUFJLE1BQU0sR0FBRyxjQUFjLENBQUMsS0FBRCxDQUFkLEdBQXlCLEtBQUQsSUFBb0IsU0FBUyxDQUFDLEtBQUQsRUFBUSxLQUFSLENBQXJELEdBQXNFLElBQW5GO0FBQ0EsUUFBSSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxXQUFXLENBQUMsS0FBRCxDQUFsQixFQUEyQixNQUEzQixDQUExQjtBQUVBLElBQUEsR0FBRyxDQUFDLFNBQUQsQ0FBSCxHQUFpQixLQUFLLENBQUMsU0FBRCxDQUF0QjtBQUVBLElBQUEsR0FBRyxDQUFDLFVBQUosR0FBaUIsVUFBakI7QUFFQSxXQUFPLEdBQVA7QUFDRCxHQVREO0FBVUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBnZXRQcm9wLCBzZXRQcm9wIH0gZnJvbSAnQGdsaW1tZXIvZ2xvYmFsLWNvbnRleHQnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBleHBlY3QsIGlzRGljdCwgc3ltYm9sIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDT05TVEFOVF9UQUcsXG4gIGNvbnN1bWVUYWcsXG4gIElOSVRJQUwsXG4gIFJldmlzaW9uLFxuICBUYWcsXG4gIHRyYWNrLFxuICB2YWxpZGF0ZVRhZyxcbiAgdmFsdWVGb3JUYWcsXG59IGZyb20gJ0BnbGltbWVyL3ZhbGlkYXRvcic7XG5cbmV4cG9ydCBjb25zdCBSRUZFUkVOQ0U6IHVuaXF1ZSBzeW1ib2wgPSBzeW1ib2woJ1JFRkVSRU5DRScpO1xuXG5jb25zdCBlbnVtIFJlZmVyZW5jZVR5cGUge1xuICBDb25zdGFudCxcbiAgQ29tcHV0ZSxcbiAgVW5ib3VuZCxcbiAgSW52b2thYmxlLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZTxfVCA9IHVua25vd24+IHtcbiAgW1JFRkVSRU5DRV06IFJlZmVyZW5jZVR5cGU7XG4gIGRlYnVnTGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlZmVyZW5jZTtcblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZUVudmlyb25tZW50IHtcbiAgZ2V0UHJvcChvYmo6IHVua25vd24sIHBhdGg6IHN0cmluZyk6IHVua25vd247XG4gIHNldFByb3Aob2JqOiB1bmtub3duLCBwYXRoOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdW5rbm93bjtcbn1cblxuY2xhc3MgUmVmZXJlbmNlSW1wbDxUID0gdW5rbm93bj4gaW1wbGVtZW50cyBSZWZlcmVuY2Uge1xuICBbUkVGRVJFTkNFXTogUmVmZXJlbmNlVHlwZTtcbiAgcHVibGljIHRhZzogT3B0aW9uPFRhZz4gPSBudWxsO1xuICBwdWJsaWMgbGFzdFJldmlzaW9uOiBSZXZpc2lvbiA9IElOSVRJQUw7XG4gIHB1YmxpYyBsYXN0VmFsdWU/OiBUO1xuXG4gIHB1YmxpYyBjaGlsZHJlbjogT3B0aW9uPE1hcDxzdHJpbmcgfCBSZWZlcmVuY2UsIFJlZmVyZW5jZT4+ID0gbnVsbDtcblxuICBwdWJsaWMgY29tcHV0ZTogT3B0aW9uPCgpID0+IFQ+ID0gbnVsbDtcbiAgcHVibGljIHVwZGF0ZTogT3B0aW9uPCh2YWw6IFQpID0+IHZvaWQ+ID0gbnVsbDtcblxuICBwdWJsaWMgZGVidWdMYWJlbD86IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih0eXBlOiBSZWZlcmVuY2VUeXBlKSB7XG4gICAgdGhpc1tSRUZFUkVOQ0VdID0gdHlwZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJpbWl0aXZlUmVmKHZhbHVlOiB1bmtub3duKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsKFJlZmVyZW5jZVR5cGUuVW5ib3VuZCk7XG5cbiAgcmVmLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgcmVmLmxhc3RWYWx1ZSA9IHZhbHVlO1xuXG4gIGlmIChERUJVRykge1xuICAgIHJlZi5kZWJ1Z0xhYmVsID0gU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBjb25zdCBVTkRFRklORURfUkVGRVJFTkNFID0gY3JlYXRlUHJpbWl0aXZlUmVmKHVuZGVmaW5lZCk7XG5leHBvcnQgY29uc3QgTlVMTF9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYobnVsbCk7XG5leHBvcnQgY29uc3QgVFJVRV9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYodHJ1ZSk7XG5leHBvcnQgY29uc3QgRkFMU0VfUkVGRVJFTkNFID0gY3JlYXRlUHJpbWl0aXZlUmVmKGZhbHNlKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnN0UmVmKHZhbHVlOiB1bmtub3duLCBkZWJ1Z0xhYmVsOiBmYWxzZSB8IHN0cmluZyk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWYgPSBuZXcgUmVmZXJlbmNlSW1wbChSZWZlcmVuY2VUeXBlLkNvbnN0YW50KTtcblxuICByZWYubGFzdFZhbHVlID0gdmFsdWU7XG4gIHJlZi50YWcgPSBDT05TVEFOVF9UQUc7XG5cbiAgaWYgKERFQlVHKSB7XG4gICAgcmVmLmRlYnVnTGFiZWwgPSBkZWJ1Z0xhYmVsIGFzIHN0cmluZztcbiAgfVxuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVbmJvdW5kUmVmKHZhbHVlOiB1bmtub3duLCBkZWJ1Z0xhYmVsOiBmYWxzZSB8IHN0cmluZyk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWYgPSBuZXcgUmVmZXJlbmNlSW1wbChSZWZlcmVuY2VUeXBlLlVuYm91bmQpO1xuXG4gIHJlZi5sYXN0VmFsdWUgPSB2YWx1ZTtcbiAgcmVmLnRhZyA9IENPTlNUQU5UX1RBRztcblxuICBpZiAoREVCVUcpIHtcbiAgICByZWYuZGVidWdMYWJlbCA9IGRlYnVnTGFiZWwgYXMgc3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbXB1dGVSZWY8VCA9IHVua25vd24+KFxuICBjb21wdXRlOiAoKSA9PiBULFxuICB1cGRhdGU6IE9wdGlvbjwodmFsdWU6IFQpID0+IHZvaWQ+ID0gbnVsbCxcbiAgZGVidWdMYWJlbDogZmFsc2UgfCBzdHJpbmcgPSAndW5rbm93bidcbik6IFJlZmVyZW5jZTxUPiB7XG4gIGxldCByZWYgPSBuZXcgUmVmZXJlbmNlSW1wbDxUPihSZWZlcmVuY2VUeXBlLkNvbXB1dGUpO1xuXG4gIHJlZi5jb21wdXRlID0gY29tcHV0ZTtcbiAgcmVmLnVwZGF0ZSA9IHVwZGF0ZTtcblxuICBpZiAoREVCVUcpIHtcbiAgICByZWYuZGVidWdMYWJlbCA9IGAocmVzdWx0IG9mIGEgXFxgJHtkZWJ1Z0xhYmVsfVxcYCBoZWxwZXIpYDtcbiAgfVxuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWFkT25seVJlZihyZWY6IFJlZmVyZW5jZSk6IFJlZmVyZW5jZSB7XG4gIGlmICghaXNVcGRhdGFibGVSZWYocmVmKSkgcmV0dXJuIHJlZjtcblxuICByZXR1cm4gY3JlYXRlQ29tcHV0ZVJlZigoKSA9PiB2YWx1ZUZvclJlZihyZWYpLCBudWxsLCByZWYuZGVidWdMYWJlbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ludm9rYWJsZVJlZihyZWY6IFJlZmVyZW5jZSkge1xuICByZXR1cm4gcmVmW1JFRkVSRU5DRV0gPT09IFJlZmVyZW5jZVR5cGUuSW52b2thYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW52b2thYmxlUmVmKGlubmVyOiBSZWZlcmVuY2UpOiBSZWZlcmVuY2Uge1xuICBsZXQgcmVmID0gY3JlYXRlQ29tcHV0ZVJlZihcbiAgICAoKSA9PiB2YWx1ZUZvclJlZihpbm5lciksXG4gICAgKHZhbHVlKSA9PiB1cGRhdGVSZWYoaW5uZXIsIHZhbHVlKVxuICApO1xuICByZWYuZGVidWdMYWJlbCA9IGlubmVyLmRlYnVnTGFiZWw7XG4gIHJlZltSRUZFUkVOQ0VdID0gUmVmZXJlbmNlVHlwZS5JbnZva2FibGU7XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uc3RSZWYoX3JlZjogUmVmZXJlbmNlKSB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw7XG5cbiAgcmV0dXJuIHJlZi50YWcgPT09IENPTlNUQU5UX1RBRztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXBkYXRhYmxlUmVmKF9yZWY6IFJlZmVyZW5jZSkge1xuICBsZXQgcmVmID0gX3JlZiBhcyBSZWZlcmVuY2VJbXBsO1xuXG4gIHJldHVybiByZWYudXBkYXRlICE9PSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGb3JSZWY8VD4oX3JlZjogUmVmZXJlbmNlPFQ+KTogVCB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw8VD47XG5cbiAgbGV0IHsgdGFnIH0gPSByZWY7XG5cbiAgaWYgKHRhZyA9PT0gQ09OU1RBTlRfVEFHKSB7XG4gICAgcmV0dXJuIHJlZi5sYXN0VmFsdWUgYXMgVDtcbiAgfVxuXG4gIGxldCB7IGxhc3RSZXZpc2lvbiB9ID0gcmVmO1xuICBsZXQgbGFzdFZhbHVlO1xuXG4gIGlmICh0YWcgPT09IG51bGwgfHwgIXZhbGlkYXRlVGFnKHRhZywgbGFzdFJldmlzaW9uKSkge1xuICAgIGxldCB7IGNvbXB1dGUgfSA9IHJlZjtcblxuICAgIHRhZyA9IHJlZi50YWcgPSB0cmFjaygoKSA9PiB7XG4gICAgICBsYXN0VmFsdWUgPSByZWYubGFzdFZhbHVlID0gY29tcHV0ZSEoKTtcbiAgICB9LCBERUJVRyAmJiByZWYuZGVidWdMYWJlbCk7XG5cbiAgICByZWYubGFzdFJldmlzaW9uID0gdmFsdWVGb3JUYWcodGFnKTtcbiAgfSBlbHNlIHtcbiAgICBsYXN0VmFsdWUgPSByZWYubGFzdFZhbHVlO1xuICB9XG5cbiAgY29uc3VtZVRhZyh0YWcpO1xuXG4gIHJldHVybiBsYXN0VmFsdWUgYXMgVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVJlZihfcmVmOiBSZWZlcmVuY2UsIHZhbHVlOiB1bmtub3duKSB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw7XG5cbiAgbGV0IHVwZGF0ZSA9IGV4cGVjdChyZWYudXBkYXRlLCAnY2FsbGVkIHVwZGF0ZSBvbiBhIG5vbi11cGRhdGFibGUgcmVmZXJlbmNlJyk7XG5cbiAgdXBkYXRlKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoaWxkUmVmRm9yKF9wYXJlbnRSZWY6IFJlZmVyZW5jZSwgcGF0aDogc3RyaW5nKTogUmVmZXJlbmNlIHtcbiAgbGV0IHBhcmVudFJlZiA9IF9wYXJlbnRSZWYgYXMgUmVmZXJlbmNlSW1wbDtcblxuICBsZXQgdHlwZSA9IHBhcmVudFJlZltSRUZFUkVOQ0VdO1xuXG4gIGxldCBjaGlsZHJlbiA9IHBhcmVudFJlZi5jaGlsZHJlbjtcbiAgbGV0IGNoaWxkOiBSZWZlcmVuY2U7XG5cbiAgaWYgKGNoaWxkcmVuID09PSBudWxsKSB7XG4gICAgY2hpbGRyZW4gPSBwYXJlbnRSZWYuY2hpbGRyZW4gPSBuZXcgTWFwKCk7XG4gIH0gZWxzZSB7XG4gICAgY2hpbGQgPSBjaGlsZHJlbi5nZXQocGF0aCkhO1xuXG4gICAgaWYgKGNoaWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZSA9PT0gUmVmZXJlbmNlVHlwZS5VbmJvdW5kKSB7XG4gICAgbGV0IHBhcmVudCA9IHZhbHVlRm9yUmVmKHBhcmVudFJlZik7XG5cbiAgICBpZiAoaXNEaWN0KHBhcmVudCkpIHtcbiAgICAgIGNoaWxkID0gY3JlYXRlVW5ib3VuZFJlZihcbiAgICAgICAgKHBhcmVudCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbcGF0aF0sXG4gICAgICAgIERFQlVHICYmIGAke3BhcmVudFJlZi5kZWJ1Z0xhYmVsfS4ke3BhdGh9YFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hpbGQgPSBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjaGlsZCA9IGNyZWF0ZUNvbXB1dGVSZWYoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGxldCBwYXJlbnQgPSB2YWx1ZUZvclJlZihwYXJlbnRSZWYpO1xuXG4gICAgICAgIGlmIChpc0RpY3QocGFyZW50KSkge1xuICAgICAgICAgIHJldHVybiBnZXRQcm9wKHBhcmVudCwgcGF0aCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAodmFsKSA9PiB7XG4gICAgICAgIGxldCBwYXJlbnQgPSB2YWx1ZUZvclJlZihwYXJlbnRSZWYpO1xuXG4gICAgICAgIGlmIChpc0RpY3QocGFyZW50KSkge1xuICAgICAgICAgIHJldHVybiBzZXRQcm9wKHBhcmVudCwgcGF0aCwgdmFsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGNoaWxkLmRlYnVnTGFiZWwgPSBgJHtwYXJlbnRSZWYuZGVidWdMYWJlbH0uJHtwYXRofWA7XG4gICAgfVxuICB9XG5cbiAgY2hpbGRyZW4uc2V0KHBhdGgsIGNoaWxkKTtcblxuICByZXR1cm4gY2hpbGQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGlsZFJlZkZyb21QYXJ0cyhyb290OiBSZWZlcmVuY2UsIHBhcnRzOiBzdHJpbmdbXSk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWZlcmVuY2UgPSByb290O1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICByZWZlcmVuY2UgPSBjaGlsZFJlZkZvcihyZWZlcmVuY2UsIHBhcnRzW2ldKTtcbiAgfVxuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBsZXQgY3JlYXRlRGVidWdBbGlhc1JlZjogdW5kZWZpbmVkIHwgKChkZWJ1Z0xhYmVsOiBzdHJpbmcsIGlubmVyOiBSZWZlcmVuY2UpID0+IFJlZmVyZW5jZSk7XG5cbmlmIChERUJVRykge1xuICBjcmVhdGVEZWJ1Z0FsaWFzUmVmID0gKGRlYnVnTGFiZWw6IHN0cmluZywgaW5uZXI6IFJlZmVyZW5jZSkgPT4ge1xuICAgIGxldCB1cGRhdGUgPSBpc1VwZGF0YWJsZVJlZihpbm5lcikgPyAodmFsdWU6IHVua25vd24pID0+IHVwZGF0ZVJlZihpbm5lciwgdmFsdWUpIDogbnVsbDtcbiAgICBsZXQgcmVmID0gY3JlYXRlQ29tcHV0ZVJlZigoKSA9PiB2YWx1ZUZvclJlZihpbm5lciksIHVwZGF0ZSk7XG5cbiAgICByZWZbUkVGRVJFTkNFXSA9IGlubmVyW1JFRkVSRU5DRV07XG5cbiAgICByZWYuZGVidWdMYWJlbCA9IGRlYnVnTGFiZWw7XG5cbiAgICByZXR1cm4gcmVmO1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3JlZmVyZW5jZS9saWIvcmVmZXJlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsS0FBVCxRQUFzQixjQUF0QjtBQUNBLFNBQVMsT0FBVCxFQUFrQixPQUFsQixRQUFpQyx5QkFBakM7QUFFQSxTQUFpQixNQUFqQixFQUF5QixNQUF6QixRQUF1QyxlQUF2QztBQUNBLFNBQ0UsWUFERixFQUVFLFVBRkYsRUFHRSxPQUhGLEVBTUUsS0FORixFQU9FLFdBUEYsRUFRRSxXQVJGLFFBU08sb0JBVFA7QUFXQSxPQUFPLE1BQU0sU0FBUyxHQUFrQixNQUFNLENBQUMsV0FBRCxDQUF2Qzs7QUF3QlAsTUFBTSxhQUFOLENBQW1CO0FBYWpCLEVBQUEsV0FBQSxDQUFZLElBQVosRUFBK0I7QUFYeEIsU0FBQSxHQUFBLEdBQW1CLElBQW5CO0FBQ0EsU0FBQSxZQUFBLEdBQXlCLE9BQXpCO0FBR0EsU0FBQSxRQUFBLEdBQXVELElBQXZEO0FBRUEsU0FBQSxPQUFBLEdBQTJCLElBQTNCO0FBQ0EsU0FBQSxNQUFBLEdBQW1DLElBQW5DO0FBS0wsU0FBSyxTQUFMLElBQWtCLElBQWxCO0FBQ0Q7O0FBZmdCOztBQWtCbkIsT0FBTSxTQUFVLGtCQUFWLENBQTZCLEtBQTdCLEVBQTJDO0FBQy9DLE1BQUksR0FBRyxHQUFHLElBQUksYUFBSixDQUFpQjtBQUFBO0FBQWpCLEdBQVY7QUFFQSxFQUFBLEdBQUcsQ0FBQyxHQUFKLEdBQVUsWUFBVjtBQUNBLEVBQUEsR0FBRyxDQUFDLFNBQUosR0FBZ0IsS0FBaEI7O0FBRUEsTUFBSSxLQUFKLEVBQVc7QUFDVCxJQUFBLEdBQUcsQ0FBQyxVQUFKLEdBQWlCLE1BQU0sQ0FBQyxLQUFELENBQXZCO0FBQ0Q7O0FBRUQsU0FBTyxHQUFQO0FBQ0Q7QUFFRCxPQUFPLE1BQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQUMsU0FBRCxDQUE5QztBQUNQLE9BQU8sTUFBTSxj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LEVBQUEsUUFBUSxDQUFDLEdBQVQsQ0FBYSxJQUFiLEVBQW1CLEtBQW5CO0FBRUEsU0FBTyxLQUFQO0FBQ0Q7QUFFRCxPQUFNLFNBQVUsaUJBQVYsQ0FBNEIsSUFBNUIsRUFBNkMsS0FBN0MsRUFBNEQ7QUFDaEUsTUFBSSxTQUFTLEdBQUcsSUFBaEI7O0FBRUEsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFiLEVBQWdCLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBMUIsRUFBa0MsQ0FBQyxFQUFuQyxFQUF1QztBQUNyQyxJQUFBLFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBRCxFQUFZLEtBQUssQ0FBQyxDQUFELENBQWpCLENBQXZCO0FBQ0Q7O0FBRUQsU0FBTyxTQUFQO0FBQ0Q7QUFFRCxPQUFPLElBQUksbUJBQUo7O0FBRVAsSUFBSSxLQUFKLEVBQVc7QUFDVCxFQUFBLG1CQUFtQixHQUFHLENBQUMsVUFBRCxFQUFxQixLQUFyQixLQUF5QztBQUM3RCxRQUFJLE1BQU0sR0FBRyxjQUFjLENBQUMsS0FBRCxDQUFkLEdBQXlCLEtBQUQsSUFBb0IsU0FBUyxDQUFDLEtBQUQsRUFBUSxLQUFSLENBQXJELEdBQXNFLElBQW5GO0FBQ0EsUUFBSSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxXQUFXLENBQUMsS0FBRCxDQUFsQixFQUEyQixNQUEzQixDQUExQjtBQUVBLElBQUEsR0FBRyxDQUFDLFNBQUQsQ0FBSCxHQUFpQixLQUFLLENBQUMsU0FBRCxDQUF0QjtBQUVBLElBQUEsR0FBRyxDQUFDLFVBQUosR0FBaUIsVUFBakI7QUFFQSxXQUFPLEdBQVA7QUFDRCxHQVREO0FBVUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBnZXRQcm9wLCBzZXRQcm9wIH0gZnJvbSAnQGdsaW1tZXIvZ2xvYmFsLWNvbnRleHQnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBleHBlY3QsIGlzRGljdCwgc3ltYm9sIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDT05TVEFOVF9UQUcsXG4gIGNvbnN1bWVUYWcsXG4gIElOSVRJQUwsXG4gIFJldmlzaW9uLFxuICBUYWcsXG4gIHRyYWNrLFxuICB2YWxpZGF0ZVRhZyxcbiAgdmFsdWVGb3JUYWcsXG59IGZyb20gJ0BnbGltbWVyL3ZhbGlkYXRvcic7XG5cbmV4cG9ydCBjb25zdCBSRUZFUkVOQ0U6IHVuaXF1ZSBzeW1ib2wgPSBzeW1ib2woJ1JFRkVSRU5DRScpO1xuXG5jb25zdCBlbnVtIFJlZmVyZW5jZVR5cGUge1xuICBDb25zdGFudCxcbiAgQ29tcHV0ZSxcbiAgVW5ib3VuZCxcbiAgSW52b2thYmxlLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZTxfVCA9IHVua25vd24+IHtcbiAgW1JFRkVSRU5DRV06IFJlZmVyZW5jZVR5cGU7XG4gIGRlYnVnTGFiZWw/OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBudWxsIHwgTWFwPHN0cmluZyB8IFJlZmVyZW5jZSwgUmVmZXJlbmNlPjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVmZXJlbmNlO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJlbmNlRW52aXJvbm1lbnQge1xuICBnZXRQcm9wKG9iajogdW5rbm93biwgcGF0aDogc3RyaW5nKTogdW5rbm93bjtcbiAgc2V0UHJvcChvYmo6IHVua25vd24sIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB1bmtub3duO1xufVxuXG5jbGFzcyBSZWZlcmVuY2VJbXBsPFQgPSB1bmtub3duPiBpbXBsZW1lbnRzIFJlZmVyZW5jZSB7XG4gIFtSRUZFUkVOQ0VdOiBSZWZlcmVuY2VUeXBlO1xuICBwdWJsaWMgdGFnOiBPcHRpb248VGFnPiA9IG51bGw7XG4gIHB1YmxpYyBsYXN0UmV2aXNpb246IFJldmlzaW9uID0gSU5JVElBTDtcbiAgcHVibGljIGxhc3RWYWx1ZT86IFQ7XG5cbiAgcHVibGljIGNoaWxkcmVuOiBPcHRpb248TWFwPHN0cmluZyB8IFJlZmVyZW5jZSwgUmVmZXJlbmNlPj4gPSBudWxsO1xuXG4gIHB1YmxpYyBjb21wdXRlOiBPcHRpb248KCkgPT4gVD4gPSBudWxsO1xuICBwdWJsaWMgdXBkYXRlOiBPcHRpb248KHZhbDogVCkgPT4gdm9pZD4gPSBudWxsO1xuXG4gIHB1YmxpYyBkZWJ1Z0xhYmVsPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IFJlZmVyZW5jZVR5cGUpIHtcbiAgICB0aGlzW1JFRkVSRU5DRV0gPSB0eXBlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcmltaXRpdmVSZWYodmFsdWU6IHVua25vd24pOiBSZWZlcmVuY2Uge1xuICBsZXQgcmVmID0gbmV3IFJlZmVyZW5jZUltcGwoUmVmZXJlbmNlVHlwZS5VbmJvdW5kKTtcblxuICByZWYudGFnID0gQ09OU1RBTlRfVEFHO1xuICByZWYubGFzdFZhbHVlID0gdmFsdWU7XG5cbiAgaWYgKERFQlVHKSB7XG4gICAgcmVmLmRlYnVnTGFiZWwgPSBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGNvbnN0IFVOREVGSU5FRF9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYodW5kZWZpbmVkKTtcbmV4cG9ydCBjb25zdCBOVUxMX1JFRkVSRU5DRSA9IGNyZWF0ZVByaW1pdGl2ZVJlZihudWxsKTtcbmV4cG9ydCBjb25zdCBUUlVFX1JFRkVSRU5DRSA9IGNyZWF0ZVByaW1pdGl2ZVJlZih0cnVlKTtcbmV4cG9ydCBjb25zdCBGQUxTRV9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYoZmFsc2UpO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29uc3RSZWYodmFsdWU6IHVua25vd24sIGRlYnVnTGFiZWw6IGZhbHNlIHwgc3RyaW5nKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsKFJlZmVyZW5jZVR5cGUuQ29uc3RhbnQpO1xuXG4gIHJlZi5sYXN0VmFsdWUgPSB2YWx1ZTtcbiAgcmVmLnRhZyA9IENPTlNUQU5UX1RBRztcblxuICBpZiAoREVCVUcpIHtcbiAgICByZWYuZGVidWdMYWJlbCA9IGRlYnVnTGFiZWwgYXMgc3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVuYm91bmRSZWYodmFsdWU6IHVua25vd24sIGRlYnVnTGFiZWw6IGZhbHNlIHwgc3RyaW5nKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsKFJlZmVyZW5jZVR5cGUuVW5ib3VuZCk7XG5cbiAgcmVmLmxhc3RWYWx1ZSA9IHZhbHVlO1xuICByZWYudGFnID0gQ09OU1RBTlRfVEFHO1xuXG4gIGlmIChERUJVRykge1xuICAgIHJlZi5kZWJ1Z0xhYmVsID0gZGVidWdMYWJlbCBhcyBzdHJpbmc7XG4gIH1cblxuICByZXR1cm4gcmVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tcHV0ZVJlZjxUID0gdW5rbm93bj4oXG4gIGNvbXB1dGU6ICgpID0+IFQsXG4gIHVwZGF0ZTogT3B0aW9uPCh2YWx1ZTogVCkgPT4gdm9pZD4gPSBudWxsLFxuICBkZWJ1Z0xhYmVsOiBmYWxzZSB8IHN0cmluZyA9ICd1bmtub3duJ1xuKTogUmVmZXJlbmNlPFQ+IHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsPFQ+KFJlZmVyZW5jZVR5cGUuQ29tcHV0ZSk7XG5cbiAgcmVmLmNvbXB1dGUgPSBjb21wdXRlO1xuICByZWYudXBkYXRlID0gdXBkYXRlO1xuXG4gIGlmIChERUJVRykge1xuICAgIHJlZi5kZWJ1Z0xhYmVsID0gYChyZXN1bHQgb2YgYSBcXGAke2RlYnVnTGFiZWx9XFxgIGhlbHBlcilgO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlYWRPbmx5UmVmKHJlZjogUmVmZXJlbmNlKTogUmVmZXJlbmNlIHtcbiAgaWYgKCFpc1VwZGF0YWJsZVJlZihyZWYpKSByZXR1cm4gcmVmO1xuXG4gIHJldHVybiBjcmVhdGVDb21wdXRlUmVmKCgpID0+IHZhbHVlRm9yUmVmKHJlZiksIG51bGwsIHJlZi5kZWJ1Z0xhYmVsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW52b2thYmxlUmVmKHJlZjogUmVmZXJlbmNlKSB7XG4gIHJldHVybiByZWZbUkVGRVJFTkNFXSA9PT0gUmVmZXJlbmNlVHlwZS5JbnZva2FibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbnZva2FibGVSZWYoaW5uZXI6IFJlZmVyZW5jZSk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWYgPSBjcmVhdGVDb21wdXRlUmVmKFxuICAgICgpID0+IHZhbHVlRm9yUmVmKGlubmVyKSxcbiAgICAodmFsdWUpID0+IHVwZGF0ZVJlZihpbm5lciwgdmFsdWUpXG4gICk7XG4gIHJlZi5kZWJ1Z0xhYmVsID0gaW5uZXIuZGVidWdMYWJlbDtcbiAgcmVmW1JFRkVSRU5DRV0gPSBSZWZlcmVuY2VUeXBlLkludm9rYWJsZTtcblxuICByZXR1cm4gcmVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb25zdFJlZihfcmVmOiBSZWZlcmVuY2UpIHtcbiAgbGV0IHJlZiA9IF9yZWYgYXMgUmVmZXJlbmNlSW1wbDtcblxuICByZXR1cm4gcmVmLnRhZyA9PT0gQ09OU1RBTlRfVEFHO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVcGRhdGFibGVSZWYoX3JlZjogUmVmZXJlbmNlKSB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw7XG5cbiAgcmV0dXJuIHJlZi51cGRhdGUgIT09IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUZvclJlZjxUPihfcmVmOiBSZWZlcmVuY2U8VD4pOiBUIHtcbiAgbGV0IHJlZiA9IF9yZWYgYXMgUmVmZXJlbmNlSW1wbDxUPjtcblxuICBsZXQgeyB0YWcgfSA9IHJlZjtcblxuICBpZiAodGFnID09PSBDT05TVEFOVF9UQUcpIHtcbiAgICByZXR1cm4gcmVmLmxhc3RWYWx1ZSBhcyBUO1xuICB9XG5cbiAgbGV0IHsgbGFzdFJldmlzaW9uIH0gPSByZWY7XG4gIGxldCBsYXN0VmFsdWU7XG5cbiAgaWYgKHRhZyA9PT0gbnVsbCB8fCAhdmFsaWRhdGVUYWcodGFnLCBsYXN0UmV2aXNpb24pKSB7XG4gICAgbGV0IHsgY29tcHV0ZSB9ID0gcmVmO1xuXG4gICAgdGFnID0gcmVmLnRhZyA9IHRyYWNrKCgpID0+IHtcbiAgICAgIGxhc3RWYWx1ZSA9IHJlZi5sYXN0VmFsdWUgPSBjb21wdXRlISgpO1xuICAgIH0sIERFQlVHICYmIHJlZi5kZWJ1Z0xhYmVsKTtcblxuICAgIHJlZi5sYXN0UmV2aXNpb24gPSB2YWx1ZUZvclRhZyh0YWcpO1xuICB9IGVsc2Uge1xuICAgIGxhc3RWYWx1ZSA9IHJlZi5sYXN0VmFsdWU7XG4gIH1cblxuICBjb25zdW1lVGFnKHRhZyk7XG5cbiAgcmV0dXJuIGxhc3RWYWx1ZSBhcyBUO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlUmVmKF9yZWY6IFJlZmVyZW5jZSwgdmFsdWU6IHVua25vd24pIHtcbiAgbGV0IHJlZiA9IF9yZWYgYXMgUmVmZXJlbmNlSW1wbDtcblxuICBsZXQgdXBkYXRlID0gZXhwZWN0KHJlZi51cGRhdGUsICdjYWxsZWQgdXBkYXRlIG9uIGEgbm9uLXVwZGF0YWJsZSByZWZlcmVuY2UnKTtcblxuICB1cGRhdGUodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hpbGRSZWZGb3IoX3BhcmVudFJlZjogUmVmZXJlbmNlLCBwYXRoOiBzdHJpbmcpOiBSZWZlcmVuY2Uge1xuICBsZXQgcGFyZW50UmVmID0gX3BhcmVudFJlZiBhcyBSZWZlcmVuY2VJbXBsO1xuXG4gIGxldCB0eXBlID0gcGFyZW50UmVmW1JFRkVSRU5DRV07XG5cbiAgbGV0IGNoaWxkcmVuID0gcGFyZW50UmVmLmNoaWxkcmVuO1xuICBsZXQgY2hpbGQ6IFJlZmVyZW5jZTtcblxuICBpZiAoY2hpbGRyZW4gPT09IG51bGwpIHtcbiAgICBjaGlsZHJlbiA9IHBhcmVudFJlZi5jaGlsZHJlbiA9IG5ldyBNYXAoKTtcbiAgfSBlbHNlIHtcbiAgICBjaGlsZCA9IGNoaWxkcmVuLmdldChwYXRoKSE7XG5cbiAgICBpZiAoY2hpbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlID09PSBSZWZlcmVuY2VUeXBlLlVuYm91bmQpIHtcbiAgICBsZXQgcGFyZW50ID0gdmFsdWVGb3JSZWYocGFyZW50UmVmKTtcblxuICAgIGlmIChpc0RpY3QocGFyZW50KSkge1xuICAgICAgY2hpbGQgPSBjcmVhdGVVbmJvdW5kUmVmKFxuICAgICAgICAocGFyZW50IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtwYXRoXSxcbiAgICAgICAgREVCVUcgJiYgYCR7cGFyZW50UmVmLmRlYnVnTGFiZWx9LiR7cGF0aH1gXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGlsZCA9IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNoaWxkID0gY3JlYXRlQ29tcHV0ZVJlZihcbiAgICAgICgpID0+IHtcbiAgICAgICAgbGV0IHBhcmVudCA9IHZhbHVlRm9yUmVmKHBhcmVudFJlZik7XG5cbiAgICAgICAgaWYgKGlzRGljdChwYXJlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIGdldFByb3AocGFyZW50LCBwYXRoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICh2YWwpID0+IHtcbiAgICAgICAgbGV0IHBhcmVudCA9IHZhbHVlRm9yUmVmKHBhcmVudFJlZik7XG5cbiAgICAgICAgaWYgKGlzRGljdChwYXJlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIHNldFByb3AocGFyZW50LCBwYXRoLCB2YWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcblxuICAgIGlmIChERUJVRykge1xuICAgICAgY2hpbGQuZGVidWdMYWJlbCA9IGAke3BhcmVudFJlZi5kZWJ1Z0xhYmVsfS4ke3BhdGh9YDtcbiAgICB9XG4gIH1cblxuICBjaGlsZHJlbi5zZXQocGF0aCwgY2hpbGQpO1xuXG4gIHJldHVybiBjaGlsZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoaWxkUmVmRnJvbVBhcnRzKHJvb3Q6IFJlZmVyZW5jZSwgcGFydHM6IHN0cmluZ1tdKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZmVyZW5jZSA9IHJvb3Q7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIHJlZmVyZW5jZSA9IGNoaWxkUmVmRm9yKHJlZmVyZW5jZSwgcGFydHNbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGxldCBjcmVhdGVEZWJ1Z0FsaWFzUmVmOiB1bmRlZmluZWQgfCAoKGRlYnVnTGFiZWw6IHN0cmluZywgaW5uZXI6IFJlZmVyZW5jZSkgPT4gUmVmZXJlbmNlKTtcblxuaWYgKERFQlVHKSB7XG4gIGNyZWF0ZURlYnVnQWxpYXNSZWYgPSAoZGVidWdMYWJlbDogc3RyaW5nLCBpbm5lcjogUmVmZXJlbmNlKSA9PiB7XG4gICAgbGV0IHVwZGF0ZSA9IGlzVXBkYXRhYmxlUmVmKGlubmVyKSA/ICh2YWx1ZTogdW5rbm93bikgPT4gdXBkYXRlUmVmKGlubmVyLCB2YWx1ZSkgOiBudWxsO1xuICAgIGxldCByZWYgPSBjcmVhdGVDb21wdXRlUmVmKCgpID0+IHZhbHVlRm9yUmVmKGlubmVyKSwgdXBkYXRlKTtcblxuICAgIHJlZltSRUZFUkVOQ0VdID0gaW5uZXJbUkVGRVJFTkNFXTtcblxuICAgIHJlZi5kZWJ1Z0xhYmVsID0gZGVidWdMYWJlbDtcblxuICAgIHJldHVybiByZWY7XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -213,2 +213,2 @@ import { DEBUG } from '@glimmer/env';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3JlZmVyZW5jZS9saWIvcmVmZXJlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQUEsS0FBQSxRQUFBLGNBQUE7QUFDQSxTQUFBLE9BQUEsRUFBQSxPQUFBLFFBQUEseUJBQUE7QUFFQSxTQUFBLE1BQUEsRUFBQSxNQUFBLFFBQUEsZUFBQTtBQUNBLFNBQUEsWUFBQSxFQUFBLFVBQUEsRUFBQSxPQUFBLEVBQUEsS0FBQSxFQUFBLFdBQUEsRUFBQSxXQUFBLFFBQUEsb0JBQUE7QUFXQSxPQUFPLElBQU0sU0FBUyxHQUFrQixNQUFNLENBQXZDLFdBQXVDLENBQXZDOztJQXVCUCxhLEdBYUUsdUJBQUEsSUFBQSxFQUErQjtBQVh4QixPQUFBLEdBQUEsR0FBQSxJQUFBO0FBQ0EsT0FBQSxZQUFBLEdBQUEsT0FBQTtBQUdBLE9BQUEsUUFBQSxHQUFBLElBQUE7QUFFQSxPQUFBLE9BQUEsR0FBQSxJQUFBO0FBQ0EsT0FBQSxNQUFBLEdBQUEsSUFBQTtBQUtMLE9BQUEsU0FBQSxJQUFBLElBQUE7QUFDRCxDOztBQUdILE9BQU0sU0FBQSxrQkFBQSxDQUFBLEtBQUEsRUFBMkM7QUFDL0MsTUFBSSxHQUFHLEdBQUcsSUFBQSxhQUFBLENBQWlCO0FBQUE7QUFBakIsR0FBVjtBQUVBLEVBQUEsR0FBRyxDQUFILEdBQUEsR0FBQSxZQUFBO0FBQ0EsRUFBQSxHQUFHLENBQUgsU0FBQSxHQUFBLEtBQUE7O0FBRUEsTUFBQSxLQUFBLEVBQVc7QUFDVCxJQUFBLEdBQUcsQ0FBSCxVQUFBLEdBQWlCLE1BQU0sQ0FBdkIsS0FBdUIsQ0FBdkI7QUFDRDs7QUFFRCxTQUFBLEdBQUE7QUFDRDtBQUVELE9BQU8sSUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBOUMsU0FBOEMsQ0FBOUM7QUFDUCxPQUFPLElBQU0sY0FBYyxHQUFHLGtCQUFrQixDQUF6QyxJQUF5QyxDQUF6QztBQUNQLE9BQU8sSUFBTSxjQUFj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LENBQUwsVUFBQSxHQUFzQixTQUFTLENBQUMsVUFBaEMsU0FBQSxJQUFBO0FBQ0Q7QUFDRjs7QUFFRCxFQUFBLFFBQVEsQ0FBUixHQUFBLENBQUEsSUFBQSxFQUFBLEtBQUE7QUFFQSxTQUFBLEtBQUE7QUFDRDtBQUVELE9BQU0sU0FBQSxpQkFBQSxDQUFBLElBQUEsRUFBQSxLQUFBLEVBQTREO0FBQ2hFLE1BQUksU0FBUyxHQUFiLElBQUE7O0FBRUEsT0FBSyxJQUFJLENBQUMsR0FBVixDQUFBLEVBQWdCLENBQUMsR0FBRyxLQUFLLENBQXpCLE1BQUEsRUFBa0MsQ0FBbEMsRUFBQSxFQUF1QztBQUNyQyxJQUFBLFNBQVMsR0FBRyxXQUFXLENBQUEsU0FBQSxFQUFZLEtBQUssQ0FBeEMsQ0FBd0MsQ0FBakIsQ0FBdkI7QUFDRDs7QUFFRCxTQUFBLFNBQUE7QUFDRDtBQUVELE9BQU8sSUFBQSxtQkFBQTs7QUFFUCxJQUFBLEtBQUEsRUFBVztBQUNULEVBQUEsbUJBQW1CLEdBQUcsNkJBQUEsVUFBQSxFQUFBLEtBQUEsRUFBeUM7QUFDN0QsUUFBSSxNQUFNLEdBQUcsY0FBYyxDQUFkLEtBQWMsQ0FBZCxHQUF5QixVQUFBLEtBQUQ7QUFBQSxhQUFvQixTQUFTLENBQUEsS0FBQSxFQUFyRCxLQUFxRCxDQUE3QjtBQUFBLEtBQXhCLEdBQWIsSUFBQTtBQUNBLFFBQUksR0FBRyxHQUFHLGdCQUFnQixDQUFDO0FBQUEsYUFBTSxXQUFXLENBQWxCLEtBQWtCLENBQWpCO0FBQUEsS0FBRCxFQUExQixNQUEwQixDQUExQjtBQUVBLElBQUEsR0FBRyxDQUFILFNBQUcsQ0FBSCxHQUFpQixLQUFLLENBQXRCLFNBQXNCLENBQXRCO0FBRUEsSUFBQSxHQUFHLENBQUgsVUFBQSxHQUFBLFVBQUE7QUFFQSxXQUFBLEdBQUE7QUFSRixHQUFBO0FBVUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBnZXRQcm9wLCBzZXRQcm9wIH0gZnJvbSAnQGdsaW1tZXIvZ2xvYmFsLWNvbnRleHQnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBleHBlY3QsIGlzRGljdCwgc3ltYm9sIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDT05TVEFOVF9UQUcsXG4gIGNvbnN1bWVUYWcsXG4gIElOSVRJQUwsXG4gIFJldmlzaW9uLFxuICBUYWcsXG4gIHRyYWNrLFxuICB2YWxpZGF0ZVRhZyxcbiAgdmFsdWVGb3JUYWcsXG59IGZyb20gJ0BnbGltbWVyL3ZhbGlkYXRvcic7XG5cbmV4cG9ydCBjb25zdCBSRUZFUkVOQ0U6IHVuaXF1ZSBzeW1ib2wgPSBzeW1ib2woJ1JFRkVSRU5DRScpO1xuXG5jb25zdCBlbnVtIFJlZmVyZW5jZVR5cGUge1xuICBDb25zdGFudCxcbiAgQ29tcHV0ZSxcbiAgVW5ib3VuZCxcbiAgSW52b2thYmxlLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZTxfVCA9IHVua25vd24+IHtcbiAgW1JFRkVSRU5DRV06IFJlZmVyZW5jZVR5cGU7XG4gIGRlYnVnTGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlZmVyZW5jZTtcblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZUVudmlyb25tZW50IHtcbiAgZ2V0UHJvcChvYmo6IHVua25vd24sIHBhdGg6IHN0cmluZyk6IHVua25vd247XG4gIHNldFByb3Aob2JqOiB1bmtub3duLCBwYXRoOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdW5rbm93bjtcbn1cblxuY2xhc3MgUmVmZXJlbmNlSW1wbDxUID0gdW5rbm93bj4gaW1wbGVtZW50cyBSZWZlcmVuY2Uge1xuICBbUkVGRVJFTkNFXTogUmVmZXJlbmNlVHlwZTtcbiAgcHVibGljIHRhZzogT3B0aW9uPFRhZz4gPSBudWxsO1xuICBwdWJsaWMgbGFzdFJldmlzaW9uOiBSZXZpc2lvbiA9IElOSVRJQUw7XG4gIHB1YmxpYyBsYXN0VmFsdWU/OiBUO1xuXG4gIHB1YmxpYyBjaGlsZHJlbjogT3B0aW9uPE1hcDxzdHJpbmcgfCBSZWZlcmVuY2UsIFJlZmVyZW5jZT4+ID0gbnVsbDtcblxuICBwdWJsaWMgY29tcHV0ZTogT3B0aW9uPCgpID0+IFQ+ID0gbnVsbDtcbiAgcHVibGljIHVwZGF0ZTogT3B0aW9uPCh2YWw6IFQpID0+IHZvaWQ+ID0gbnVsbDtcblxuICBwdWJsaWMgZGVidWdMYWJlbD86IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih0eXBlOiBSZWZlcmVuY2VUeXBlKSB7XG4gICAgdGhpc1tSRUZFUkVOQ0VdID0gdHlwZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJpbWl0aXZlUmVmKHZhbHVlOiB1bmtub3duKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsKFJlZmVyZW5jZVR5cGUuVW5ib3VuZCk7XG5cbiAgcmVmLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgcmVmLmxhc3RWYWx1ZSA9IHZhbHVlO1xuXG4gIGlmIChERUJVRykge1xuICAgIHJlZi5kZWJ1Z0xhYmVsID0gU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBjb25zdCBVTkRFRklORURfUkVGRVJFTkNFID0gY3JlYXRlUHJpbWl0aXZlUmVmKHVuZGVmaW5lZCk7XG5leHBvcnQgY29uc3QgTlVMTF9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYobnVsbCk7XG5leHBvcnQgY29uc3QgVFJVRV9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYodHJ1ZSk7XG5leHBvcnQgY29uc3QgRkFMU0VfUkVGRVJFTkNFID0gY3JlYXRlUHJpbWl0aXZlUmVmKGZhbHNlKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnN0UmVmKHZhbHVlOiB1bmtub3duLCBkZWJ1Z0xhYmVsOiBmYWxzZSB8IHN0cmluZyk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWYgPSBuZXcgUmVmZXJlbmNlSW1wbChSZWZlcmVuY2VUeXBlLkNvbnN0YW50KTtcblxuICByZWYubGFzdFZhbHVlID0gdmFsdWU7XG4gIHJlZi50YWcgPSBDT05TVEFOVF9UQUc7XG5cbiAgaWYgKERFQlVHKSB7XG4gICAgcmVmLmRlYnVnTGFiZWwgPSBkZWJ1Z0xhYmVsIGFzIHN0cmluZztcbiAgfVxuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVbmJvdW5kUmVmKHZhbHVlOiB1bmtub3duLCBkZWJ1Z0xhYmVsOiBmYWxzZSB8IHN0cmluZyk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWYgPSBuZXcgUmVmZXJlbmNlSW1wbChSZWZlcmVuY2VUeXBlLlVuYm91bmQpO1xuXG4gIHJlZi5sYXN0VmFsdWUgPSB2YWx1ZTtcbiAgcmVmLnRhZyA9IENPTlNUQU5UX1RBRztcblxuICBpZiAoREVCVUcpIHtcbiAgICByZWYuZGVidWdMYWJlbCA9IGRlYnVnTGFiZWwgYXMgc3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbXB1dGVSZWY8VCA9IHVua25vd24+KFxuICBjb21wdXRlOiAoKSA9PiBULFxuICB1cGRhdGU6IE9wdGlvbjwodmFsdWU6IFQpID0+IHZvaWQ+ID0gbnVsbCxcbiAgZGVidWdMYWJlbDogZmFsc2UgfCBzdHJpbmcgPSAndW5rbm93bidcbik6IFJlZmVyZW5jZTxUPiB7XG4gIGxldCByZWYgPSBuZXcgUmVmZXJlbmNlSW1wbDxUPihSZWZlcmVuY2VUeXBlLkNvbXB1dGUpO1xuXG4gIHJlZi5jb21wdXRlID0gY29tcHV0ZTtcbiAgcmVmLnVwZGF0ZSA9IHVwZGF0ZTtcblxuICBpZiAoREVCVUcpIHtcbiAgICByZWYuZGVidWdMYWJlbCA9IGAocmVzdWx0IG9mIGEgXFxgJHtkZWJ1Z0xhYmVsfVxcYCBoZWxwZXIpYDtcbiAgfVxuXG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWFkT25seVJlZihyZWY6IFJlZmVyZW5jZSk6IFJlZmVyZW5jZSB7XG4gIGlmICghaXNVcGRhdGFibGVSZWYocmVmKSkgcmV0dXJuIHJlZjtcblxuICByZXR1cm4gY3JlYXRlQ29tcHV0ZVJlZigoKSA9PiB2YWx1ZUZvclJlZihyZWYpLCBudWxsLCByZWYuZGVidWdMYWJlbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ludm9rYWJsZVJlZihyZWY6IFJlZmVyZW5jZSkge1xuICByZXR1cm4gcmVmW1JFRkVSRU5DRV0gPT09IFJlZmVyZW5jZVR5cGUuSW52b2thYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW52b2thYmxlUmVmKGlubmVyOiBSZWZlcmVuY2UpOiBSZWZlcmVuY2Uge1xuICBsZXQgcmVmID0gY3JlYXRlQ29tcHV0ZVJlZihcbiAgICAoKSA9PiB2YWx1ZUZvclJlZihpbm5lciksXG4gICAgKHZhbHVlKSA9PiB1cGRhdGVSZWYoaW5uZXIsIHZhbHVlKVxuICApO1xuICByZWYuZGVidWdMYWJlbCA9IGlubmVyLmRlYnVnTGFiZWw7XG4gIHJlZltSRUZFUkVOQ0VdID0gUmVmZXJlbmNlVHlwZS5JbnZva2FibGU7XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uc3RSZWYoX3JlZjogUmVmZXJlbmNlKSB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw7XG5cbiAgcmV0dXJuIHJlZi50YWcgPT09IENPTlNUQU5UX1RBRztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXBkYXRhYmxlUmVmKF9yZWY6IFJlZmVyZW5jZSkge1xuICBsZXQgcmVmID0gX3JlZiBhcyBSZWZlcmVuY2VJbXBsO1xuXG4gIHJldHVybiByZWYudXBkYXRlICE9PSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGb3JSZWY8VD4oX3JlZjogUmVmZXJlbmNlPFQ+KTogVCB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw8VD47XG5cbiAgbGV0IHsgdGFnIH0gPSByZWY7XG5cbiAgaWYgKHRhZyA9PT0gQ09OU1RBTlRfVEFHKSB7XG4gICAgcmV0dXJuIHJlZi5sYXN0VmFsdWUgYXMgVDtcbiAgfVxuXG4gIGxldCB7IGxhc3RSZXZpc2lvbiB9ID0gcmVmO1xuICBsZXQgbGFzdFZhbHVlO1xuXG4gIGlmICh0YWcgPT09IG51bGwgfHwgIXZhbGlkYXRlVGFnKHRhZywgbGFzdFJldmlzaW9uKSkge1xuICAgIGxldCB7IGNvbXB1dGUgfSA9IHJlZjtcblxuICAgIHRhZyA9IHJlZi50YWcgPSB0cmFjaygoKSA9PiB7XG4gICAgICBsYXN0VmFsdWUgPSByZWYubGFzdFZhbHVlID0gY29tcHV0ZSEoKTtcbiAgICB9LCBERUJVRyAmJiByZWYuZGVidWdMYWJlbCk7XG5cbiAgICByZWYubGFzdFJldmlzaW9uID0gdmFsdWVGb3JUYWcodGFnKTtcbiAgfSBlbHNlIHtcbiAgICBsYXN0VmFsdWUgPSByZWYubGFzdFZhbHVlO1xuICB9XG5cbiAgY29uc3VtZVRhZyh0YWcpO1xuXG4gIHJldHVybiBsYXN0VmFsdWUgYXMgVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVJlZihfcmVmOiBSZWZlcmVuY2UsIHZhbHVlOiB1bmtub3duKSB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw7XG5cbiAgbGV0IHVwZGF0ZSA9IGV4cGVjdChyZWYudXBkYXRlLCAnY2FsbGVkIHVwZGF0ZSBvbiBhIG5vbi11cGRhdGFibGUgcmVmZXJlbmNlJyk7XG5cbiAgdXBkYXRlKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoaWxkUmVmRm9yKF9wYXJlbnRSZWY6IFJlZmVyZW5jZSwgcGF0aDogc3RyaW5nKTogUmVmZXJlbmNlIHtcbiAgbGV0IHBhcmVudFJlZiA9IF9wYXJlbnRSZWYgYXMgUmVmZXJlbmNlSW1wbDtcblxuICBsZXQgdHlwZSA9IHBhcmVudFJlZltSRUZFUkVOQ0VdO1xuXG4gIGxldCBjaGlsZHJlbiA9IHBhcmVudFJlZi5jaGlsZHJlbjtcbiAgbGV0IGNoaWxkOiBSZWZlcmVuY2U7XG5cbiAgaWYgKGNoaWxkcmVuID09PSBudWxsKSB7XG4gICAgY2hpbGRyZW4gPSBwYXJlbnRSZWYuY2hpbGRyZW4gPSBuZXcgTWFwKCk7XG4gIH0gZWxzZSB7XG4gICAgY2hpbGQgPSBjaGlsZHJlbi5nZXQocGF0aCkhO1xuXG4gICAgaWYgKGNoaWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZSA9PT0gUmVmZXJlbmNlVHlwZS5VbmJvdW5kKSB7XG4gICAgbGV0IHBhcmVudCA9IHZhbHVlRm9yUmVmKHBhcmVudFJlZik7XG5cbiAgICBpZiAoaXNEaWN0KHBhcmVudCkpIHtcbiAgICAgIGNoaWxkID0gY3JlYXRlVW5ib3VuZFJlZihcbiAgICAgICAgKHBhcmVudCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbcGF0aF0sXG4gICAgICAgIERFQlVHICYmIGAke3BhcmVudFJlZi5kZWJ1Z0xhYmVsfS4ke3BhdGh9YFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hpbGQgPSBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjaGlsZCA9IGNyZWF0ZUNvbXB1dGVSZWYoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGxldCBwYXJlbnQgPSB2YWx1ZUZvclJlZihwYXJlbnRSZWYpO1xuXG4gICAgICAgIGlmIChpc0RpY3QocGFyZW50KSkge1xuICAgICAgICAgIHJldHVybiBnZXRQcm9wKHBhcmVudCwgcGF0aCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAodmFsKSA9PiB7XG4gICAgICAgIGxldCBwYXJlbnQgPSB2YWx1ZUZvclJlZihwYXJlbnRSZWYpO1xuXG4gICAgICAgIGlmIChpc0RpY3QocGFyZW50KSkge1xuICAgICAgICAgIHJldHVybiBzZXRQcm9wKHBhcmVudCwgcGF0aCwgdmFsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGNoaWxkLmRlYnVnTGFiZWwgPSBgJHtwYXJlbnRSZWYuZGVidWdMYWJlbH0uJHtwYXRofWA7XG4gICAgfVxuICB9XG5cbiAgY2hpbGRyZW4uc2V0KHBhdGgsIGNoaWxkKTtcblxuICByZXR1cm4gY2hpbGQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGlsZFJlZkZyb21QYXJ0cyhyb290OiBSZWZlcmVuY2UsIHBhcnRzOiBzdHJpbmdbXSk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWZlcmVuY2UgPSByb290O1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICByZWZlcmVuY2UgPSBjaGlsZFJlZkZvcihyZWZlcmVuY2UsIHBhcnRzW2ldKTtcbiAgfVxuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBsZXQgY3JlYXRlRGVidWdBbGlhc1JlZjogdW5kZWZpbmVkIHwgKChkZWJ1Z0xhYmVsOiBzdHJpbmcsIGlubmVyOiBSZWZlcmVuY2UpID0+IFJlZmVyZW5jZSk7XG5cbmlmIChERUJVRykge1xuICBjcmVhdGVEZWJ1Z0FsaWFzUmVmID0gKGRlYnVnTGFiZWw6IHN0cmluZywgaW5uZXI6IFJlZmVyZW5jZSkgPT4ge1xuICAgIGxldCB1cGRhdGUgPSBpc1VwZGF0YWJsZVJlZihpbm5lcikgPyAodmFsdWU6IHVua25vd24pID0+IHVwZGF0ZVJlZihpbm5lciwgdmFsdWUpIDogbnVsbDtcbiAgICBsZXQgcmVmID0gY3JlYXRlQ29tcHV0ZVJlZigoKSA9PiB2YWx1ZUZvclJlZihpbm5lciksIHVwZGF0ZSk7XG5cbiAgICByZWZbUkVGRVJFTkNFXSA9IGlubmVyW1JFRkVSRU5DRV07XG5cbiAgICByZWYuZGVidWdMYWJlbCA9IGRlYnVnTGFiZWw7XG5cbiAgICByZXR1cm4gcmVmO1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3JlZmVyZW5jZS9saWIvcmVmZXJlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQUEsS0FBQSxRQUFBLGNBQUE7QUFDQSxTQUFBLE9BQUEsRUFBQSxPQUFBLFFBQUEseUJBQUE7QUFFQSxTQUFBLE1BQUEsRUFBQSxNQUFBLFFBQUEsZUFBQTtBQUNBLFNBQUEsWUFBQSxFQUFBLFVBQUEsRUFBQSxPQUFBLEVBQUEsS0FBQSxFQUFBLFdBQUEsRUFBQSxXQUFBLFFBQUEsb0JBQUE7QUFXQSxPQUFPLElBQU0sU0FBUyxHQUFrQixNQUFNLENBQXZDLFdBQXVDLENBQXZDOztJQXdCUCxhLEdBYUUsdUJBQUEsSUFBQSxFQUErQjtBQVh4QixPQUFBLEdBQUEsR0FBQSxJQUFBO0FBQ0EsT0FBQSxZQUFBLEdBQUEsT0FBQTtBQUdBLE9BQUEsUUFBQSxHQUFBLElBQUE7QUFFQSxPQUFBLE9BQUEsR0FBQSxJQUFBO0FBQ0EsT0FBQSxNQUFBLEdBQUEsSUFBQTtBQUtMLE9BQUEsU0FBQSxJQUFBLElBQUE7QUFDRCxDOztBQUdILE9BQU0sU0FBQSxrQkFBQSxDQUFBLEtBQUEsRUFBMkM7QUFDL0MsTUFBSSxHQUFHLEdBQUcsSUFBQSxhQUFBLENBQWlCO0FBQUE7QUFBakIsR0FBVjtBQUVBLEVBQUEsR0FBRyxDQUFILEdBQUEsR0FBQSxZQUFBO0FBQ0EsRUFBQSxHQUFHLENBQUgsU0FBQSxHQUFBLEtBQUE7O0FBRUEsTUFBQSxLQUFBLEVBQVc7QUFDVCxJQUFBLEdBQUcsQ0FBSCxVQUFBLEdBQWlCLE1BQU0sQ0FBdkIsS0FBdUIsQ0FBdkI7QUFDRDs7QUFFRCxTQUFBLEdBQUE7QUFDRDtBQUVELE9BQU8sSUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBOUMsU0FBOEMsQ0FBOUM7QUFDUCxPQUFPLElBQU0sY0FBYyxHQUFHLGtCQUFrQixDQUF6QyxJQUF5QyxDQUF6QztBQUNQLE9BQU8sSUFBTSxjQUFj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LENBQUwsVUFBQSxHQUFzQixTQUFTLENBQUMsVUFBaEMsU0FBQSxJQUFBO0FBQ0Q7QUFDRjs7QUFFRCxFQUFBLFFBQVEsQ0FBUixHQUFBLENBQUEsSUFBQSxFQUFBLEtBQUE7QUFFQSxTQUFBLEtBQUE7QUFDRDtBQUVELE9BQU0sU0FBQSxpQkFBQSxDQUFBLElBQUEsRUFBQSxLQUFBLEVBQTREO0FBQ2hFLE1BQUksU0FBUyxHQUFiLElBQUE7O0FBRUEsT0FBSyxJQUFJLENBQUMsR0FBVixDQUFBLEVBQWdCLENBQUMsR0FBRyxLQUFLLENBQXpCLE1BQUEsRUFBa0MsQ0FBbEMsRUFBQSxFQUF1QztBQUNyQyxJQUFBLFNBQVMsR0FBRyxXQUFXLENBQUEsU0FBQSxFQUFZLEtBQUssQ0FBeEMsQ0FBd0MsQ0FBakIsQ0FBdkI7QUFDRDs7QUFFRCxTQUFBLFNBQUE7QUFDRDtBQUVELE9BQU8sSUFBQSxtQkFBQTs7QUFFUCxJQUFBLEtBQUEsRUFBVztBQUNULEVBQUEsbUJBQW1CLEdBQUcsNkJBQUEsVUFBQSxFQUFBLEtBQUEsRUFBeUM7QUFDN0QsUUFBSSxNQUFNLEdBQUcsY0FBYyxDQUFkLEtBQWMsQ0FBZCxHQUF5QixVQUFBLEtBQUQ7QUFBQSxhQUFvQixTQUFTLENBQUEsS0FBQSxFQUFyRCxLQUFxRCxDQUE3QjtBQUFBLEtBQXhCLEdBQWIsSUFBQTtBQUNBLFFBQUksR0FBRyxHQUFHLGdCQUFnQixDQUFDO0FBQUEsYUFBTSxXQUFXLENBQWxCLEtBQWtCLENBQWpCO0FBQUEsS0FBRCxFQUExQixNQUEwQixDQUExQjtBQUVBLElBQUEsR0FBRyxDQUFILFNBQUcsQ0FBSCxHQUFpQixLQUFLLENBQXRCLFNBQXNCLENBQXRCO0FBRUEsSUFBQSxHQUFHLENBQUgsVUFBQSxHQUFBLFVBQUE7QUFFQSxXQUFBLEdBQUE7QUFSRixHQUFBO0FBVUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBnZXRQcm9wLCBzZXRQcm9wIH0gZnJvbSAnQGdsaW1tZXIvZ2xvYmFsLWNvbnRleHQnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBleHBlY3QsIGlzRGljdCwgc3ltYm9sIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDT05TVEFOVF9UQUcsXG4gIGNvbnN1bWVUYWcsXG4gIElOSVRJQUwsXG4gIFJldmlzaW9uLFxuICBUYWcsXG4gIHRyYWNrLFxuICB2YWxpZGF0ZVRhZyxcbiAgdmFsdWVGb3JUYWcsXG59IGZyb20gJ0BnbGltbWVyL3ZhbGlkYXRvcic7XG5cbmV4cG9ydCBjb25zdCBSRUZFUkVOQ0U6IHVuaXF1ZSBzeW1ib2wgPSBzeW1ib2woJ1JFRkVSRU5DRScpO1xuXG5jb25zdCBlbnVtIFJlZmVyZW5jZVR5cGUge1xuICBDb25zdGFudCxcbiAgQ29tcHV0ZSxcbiAgVW5ib3VuZCxcbiAgSW52b2thYmxlLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZTxfVCA9IHVua25vd24+IHtcbiAgW1JFRkVSRU5DRV06IFJlZmVyZW5jZVR5cGU7XG4gIGRlYnVnTGFiZWw/OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBudWxsIHwgTWFwPHN0cmluZyB8IFJlZmVyZW5jZSwgUmVmZXJlbmNlPjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVmZXJlbmNlO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJlbmNlRW52aXJvbm1lbnQge1xuICBnZXRQcm9wKG9iajogdW5rbm93biwgcGF0aDogc3RyaW5nKTogdW5rbm93bjtcbiAgc2V0UHJvcChvYmo6IHVua25vd24sIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB1bmtub3duO1xufVxuXG5jbGFzcyBSZWZlcmVuY2VJbXBsPFQgPSB1bmtub3duPiBpbXBsZW1lbnRzIFJlZmVyZW5jZSB7XG4gIFtSRUZFUkVOQ0VdOiBSZWZlcmVuY2VUeXBlO1xuICBwdWJsaWMgdGFnOiBPcHRpb248VGFnPiA9IG51bGw7XG4gIHB1YmxpYyBsYXN0UmV2aXNpb246IFJldmlzaW9uID0gSU5JVElBTDtcbiAgcHVibGljIGxhc3RWYWx1ZT86IFQ7XG5cbiAgcHVibGljIGNoaWxkcmVuOiBPcHRpb248TWFwPHN0cmluZyB8IFJlZmVyZW5jZSwgUmVmZXJlbmNlPj4gPSBudWxsO1xuXG4gIHB1YmxpYyBjb21wdXRlOiBPcHRpb248KCkgPT4gVD4gPSBudWxsO1xuICBwdWJsaWMgdXBkYXRlOiBPcHRpb248KHZhbDogVCkgPT4gdm9pZD4gPSBudWxsO1xuXG4gIHB1YmxpYyBkZWJ1Z0xhYmVsPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IFJlZmVyZW5jZVR5cGUpIHtcbiAgICB0aGlzW1JFRkVSRU5DRV0gPSB0eXBlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcmltaXRpdmVSZWYodmFsdWU6IHVua25vd24pOiBSZWZlcmVuY2Uge1xuICBsZXQgcmVmID0gbmV3IFJlZmVyZW5jZUltcGwoUmVmZXJlbmNlVHlwZS5VbmJvdW5kKTtcblxuICByZWYudGFnID0gQ09OU1RBTlRfVEFHO1xuICByZWYubGFzdFZhbHVlID0gdmFsdWU7XG5cbiAgaWYgKERFQlVHKSB7XG4gICAgcmVmLmRlYnVnTGFiZWwgPSBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGNvbnN0IFVOREVGSU5FRF9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYodW5kZWZpbmVkKTtcbmV4cG9ydCBjb25zdCBOVUxMX1JFRkVSRU5DRSA9IGNyZWF0ZVByaW1pdGl2ZVJlZihudWxsKTtcbmV4cG9ydCBjb25zdCBUUlVFX1JFRkVSRU5DRSA9IGNyZWF0ZVByaW1pdGl2ZVJlZih0cnVlKTtcbmV4cG9ydCBjb25zdCBGQUxTRV9SRUZFUkVOQ0UgPSBjcmVhdGVQcmltaXRpdmVSZWYoZmFsc2UpO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29uc3RSZWYodmFsdWU6IHVua25vd24sIGRlYnVnTGFiZWw6IGZhbHNlIHwgc3RyaW5nKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsKFJlZmVyZW5jZVR5cGUuQ29uc3RhbnQpO1xuXG4gIHJlZi5sYXN0VmFsdWUgPSB2YWx1ZTtcbiAgcmVmLnRhZyA9IENPTlNUQU5UX1RBRztcblxuICBpZiAoREVCVUcpIHtcbiAgICByZWYuZGVidWdMYWJlbCA9IGRlYnVnTGFiZWwgYXMgc3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVuYm91bmRSZWYodmFsdWU6IHVua25vd24sIGRlYnVnTGFiZWw6IGZhbHNlIHwgc3RyaW5nKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsKFJlZmVyZW5jZVR5cGUuVW5ib3VuZCk7XG5cbiAgcmVmLmxhc3RWYWx1ZSA9IHZhbHVlO1xuICByZWYudGFnID0gQ09OU1RBTlRfVEFHO1xuXG4gIGlmIChERUJVRykge1xuICAgIHJlZi5kZWJ1Z0xhYmVsID0gZGVidWdMYWJlbCBhcyBzdHJpbmc7XG4gIH1cblxuICByZXR1cm4gcmVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tcHV0ZVJlZjxUID0gdW5rbm93bj4oXG4gIGNvbXB1dGU6ICgpID0+IFQsXG4gIHVwZGF0ZTogT3B0aW9uPCh2YWx1ZTogVCkgPT4gdm9pZD4gPSBudWxsLFxuICBkZWJ1Z0xhYmVsOiBmYWxzZSB8IHN0cmluZyA9ICd1bmtub3duJ1xuKTogUmVmZXJlbmNlPFQ+IHtcbiAgbGV0IHJlZiA9IG5ldyBSZWZlcmVuY2VJbXBsPFQ+KFJlZmVyZW5jZVR5cGUuQ29tcHV0ZSk7XG5cbiAgcmVmLmNvbXB1dGUgPSBjb21wdXRlO1xuICByZWYudXBkYXRlID0gdXBkYXRlO1xuXG4gIGlmIChERUJVRykge1xuICAgIHJlZi5kZWJ1Z0xhYmVsID0gYChyZXN1bHQgb2YgYSBcXGAke2RlYnVnTGFiZWx9XFxgIGhlbHBlcilgO1xuICB9XG5cbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlYWRPbmx5UmVmKHJlZjogUmVmZXJlbmNlKTogUmVmZXJlbmNlIHtcbiAgaWYgKCFpc1VwZGF0YWJsZVJlZihyZWYpKSByZXR1cm4gcmVmO1xuXG4gIHJldHVybiBjcmVhdGVDb21wdXRlUmVmKCgpID0+IHZhbHVlRm9yUmVmKHJlZiksIG51bGwsIHJlZi5kZWJ1Z0xhYmVsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW52b2thYmxlUmVmKHJlZjogUmVmZXJlbmNlKSB7XG4gIHJldHVybiByZWZbUkVGRVJFTkNFXSA9PT0gUmVmZXJlbmNlVHlwZS5JbnZva2FibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbnZva2FibGVSZWYoaW5uZXI6IFJlZmVyZW5jZSk6IFJlZmVyZW5jZSB7XG4gIGxldCByZWYgPSBjcmVhdGVDb21wdXRlUmVmKFxuICAgICgpID0+IHZhbHVlRm9yUmVmKGlubmVyKSxcbiAgICAodmFsdWUpID0+IHVwZGF0ZVJlZihpbm5lciwgdmFsdWUpXG4gICk7XG4gIHJlZi5kZWJ1Z0xhYmVsID0gaW5uZXIuZGVidWdMYWJlbDtcbiAgcmVmW1JFRkVSRU5DRV0gPSBSZWZlcmVuY2VUeXBlLkludm9rYWJsZTtcblxuICByZXR1cm4gcmVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb25zdFJlZihfcmVmOiBSZWZlcmVuY2UpIHtcbiAgbGV0IHJlZiA9IF9yZWYgYXMgUmVmZXJlbmNlSW1wbDtcblxuICByZXR1cm4gcmVmLnRhZyA9PT0gQ09OU1RBTlRfVEFHO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVcGRhdGFibGVSZWYoX3JlZjogUmVmZXJlbmNlKSB7XG4gIGxldCByZWYgPSBfcmVmIGFzIFJlZmVyZW5jZUltcGw7XG5cbiAgcmV0dXJuIHJlZi51cGRhdGUgIT09IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUZvclJlZjxUPihfcmVmOiBSZWZlcmVuY2U8VD4pOiBUIHtcbiAgbGV0IHJlZiA9IF9yZWYgYXMgUmVmZXJlbmNlSW1wbDxUPjtcblxuICBsZXQgeyB0YWcgfSA9IHJlZjtcblxuICBpZiAodGFnID09PSBDT05TVEFOVF9UQUcpIHtcbiAgICByZXR1cm4gcmVmLmxhc3RWYWx1ZSBhcyBUO1xuICB9XG5cbiAgbGV0IHsgbGFzdFJldmlzaW9uIH0gPSByZWY7XG4gIGxldCBsYXN0VmFsdWU7XG5cbiAgaWYgKHRhZyA9PT0gbnVsbCB8fCAhdmFsaWRhdGVUYWcodGFnLCBsYXN0UmV2aXNpb24pKSB7XG4gICAgbGV0IHsgY29tcHV0ZSB9ID0gcmVmO1xuXG4gICAgdGFnID0gcmVmLnRhZyA9IHRyYWNrKCgpID0+IHtcbiAgICAgIGxhc3RWYWx1ZSA9IHJlZi5sYXN0VmFsdWUgPSBjb21wdXRlISgpO1xuICAgIH0sIERFQlVHICYmIHJlZi5kZWJ1Z0xhYmVsKTtcblxuICAgIHJlZi5sYXN0UmV2aXNpb24gPSB2YWx1ZUZvclRhZyh0YWcpO1xuICB9IGVsc2Uge1xuICAgIGxhc3RWYWx1ZSA9IHJlZi5sYXN0VmFsdWU7XG4gIH1cblxuICBjb25zdW1lVGFnKHRhZyk7XG5cbiAgcmV0dXJuIGxhc3RWYWx1ZSBhcyBUO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlUmVmKF9yZWY6IFJlZmVyZW5jZSwgdmFsdWU6IHVua25vd24pIHtcbiAgbGV0IHJlZiA9IF9yZWYgYXMgUmVmZXJlbmNlSW1wbDtcblxuICBsZXQgdXBkYXRlID0gZXhwZWN0KHJlZi51cGRhdGUsICdjYWxsZWQgdXBkYXRlIG9uIGEgbm9uLXVwZGF0YWJsZSByZWZlcmVuY2UnKTtcblxuICB1cGRhdGUodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hpbGRSZWZGb3IoX3BhcmVudFJlZjogUmVmZXJlbmNlLCBwYXRoOiBzdHJpbmcpOiBSZWZlcmVuY2Uge1xuICBsZXQgcGFyZW50UmVmID0gX3BhcmVudFJlZiBhcyBSZWZlcmVuY2VJbXBsO1xuXG4gIGxldCB0eXBlID0gcGFyZW50UmVmW1JFRkVSRU5DRV07XG5cbiAgbGV0IGNoaWxkcmVuID0gcGFyZW50UmVmLmNoaWxkcmVuO1xuICBsZXQgY2hpbGQ6IFJlZmVyZW5jZTtcblxuICBpZiAoY2hpbGRyZW4gPT09IG51bGwpIHtcbiAgICBjaGlsZHJlbiA9IHBhcmVudFJlZi5jaGlsZHJlbiA9IG5ldyBNYXAoKTtcbiAgfSBlbHNlIHtcbiAgICBjaGlsZCA9IGNoaWxkcmVuLmdldChwYXRoKSE7XG5cbiAgICBpZiAoY2hpbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlID09PSBSZWZlcmVuY2VUeXBlLlVuYm91bmQpIHtcbiAgICBsZXQgcGFyZW50ID0gdmFsdWVGb3JSZWYocGFyZW50UmVmKTtcblxuICAgIGlmIChpc0RpY3QocGFyZW50KSkge1xuICAgICAgY2hpbGQgPSBjcmVhdGVVbmJvdW5kUmVmKFxuICAgICAgICAocGFyZW50IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtwYXRoXSxcbiAgICAgICAgREVCVUcgJiYgYCR7cGFyZW50UmVmLmRlYnVnTGFiZWx9LiR7cGF0aH1gXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGlsZCA9IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNoaWxkID0gY3JlYXRlQ29tcHV0ZVJlZihcbiAgICAgICgpID0+IHtcbiAgICAgICAgbGV0IHBhcmVudCA9IHZhbHVlRm9yUmVmKHBhcmVudFJlZik7XG5cbiAgICAgICAgaWYgKGlzRGljdChwYXJlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIGdldFByb3AocGFyZW50LCBwYXRoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICh2YWwpID0+IHtcbiAgICAgICAgbGV0IHBhcmVudCA9IHZhbHVlRm9yUmVmKHBhcmVudFJlZik7XG5cbiAgICAgICAgaWYgKGlzRGljdChwYXJlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIHNldFByb3AocGFyZW50LCBwYXRoLCB2YWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcblxuICAgIGlmIChERUJVRykge1xuICAgICAgY2hpbGQuZGVidWdMYWJlbCA9IGAke3BhcmVudFJlZi5kZWJ1Z0xhYmVsfS4ke3BhdGh9YDtcbiAgICB9XG4gIH1cblxuICBjaGlsZHJlbi5zZXQocGF0aCwgY2hpbGQpO1xuXG4gIHJldHVybiBjaGlsZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoaWxkUmVmRnJvbVBhcnRzKHJvb3Q6IFJlZmVyZW5jZSwgcGFydHM6IHN0cmluZ1tdKTogUmVmZXJlbmNlIHtcbiAgbGV0IHJlZmVyZW5jZSA9IHJvb3Q7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIHJlZmVyZW5jZSA9IGNoaWxkUmVmRm9yKHJlZmVyZW5jZSwgcGFydHNbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGxldCBjcmVhdGVEZWJ1Z0FsaWFzUmVmOiB1bmRlZmluZWQgfCAoKGRlYnVnTGFiZWw6IHN0cmluZywgaW5uZXI6IFJlZmVyZW5jZSkgPT4gUmVmZXJlbmNlKTtcblxuaWYgKERFQlVHKSB7XG4gIGNyZWF0ZURlYnVnQWxpYXNSZWYgPSAoZGVidWdMYWJlbDogc3RyaW5nLCBpbm5lcjogUmVmZXJlbmNlKSA9PiB7XG4gICAgbGV0IHVwZGF0ZSA9IGlzVXBkYXRhYmxlUmVmKGlubmVyKSA/ICh2YWx1ZTogdW5rbm93bikgPT4gdXBkYXRlUmVmKGlubmVyLCB2YWx1ZSkgOiBudWxsO1xuICAgIGxldCByZWYgPSBjcmVhdGVDb21wdXRlUmVmKCgpID0+IHZhbHVlRm9yUmVmKGlubmVyKSwgdXBkYXRlKTtcblxuICAgIHJlZltSRUZFUkVOQ0VdID0gaW5uZXJbUkVGRVJFTkNFXTtcblxuICAgIHJlZi5kZWJ1Z0xhYmVsID0gZGVidWdMYWJlbDtcblxuICAgIHJldHVybiByZWY7XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -12,2 +12,3 @@ import { Option } from '@glimmer/interfaces';

debugLabel?: string;
children: null | Map<string | Reference, Reference>;
}

@@ -14,0 +15,0 @@ export default Reference;

{
"name": "@glimmer/reference",
"version": "0.79.4",
"version": "0.80.0",
"description": "Objects used to track values and their dirtiness in Glimmer",

@@ -8,6 +8,6 @@ "license": "MIT",

"@glimmer/env": "^0.1.7",
"@glimmer/global-context": "0.79.4",
"@glimmer/interfaces": "0.79.4",
"@glimmer/util": "0.79.4",
"@glimmer/validator": "0.79.4"
"@glimmer/global-context": "0.80.0",
"@glimmer/interfaces": "0.80.0",
"@glimmer/util": "0.80.0",
"@glimmer/validator": "0.80.0"
},

@@ -14,0 +14,0 @@ "main": "dist/commonjs/es2017/index.js",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc